. segunda-feira, 17 de março de 2008
  • Agregar a Technorati
  • Agregar a Del.icio.us
  • Agregar a DiggIt!
  • Agregar a Yahoo!
  • Agregar a Google
  • Agregar a Meneame
  • Agregar a Furl
  • Agregar a Reddit
  • Agregar a Magnolia
  • Agregar a Blinklist
  • Agregar a Blogmarks



No RailsPodCast.br #8 foi lançado um desafio para escrever um artigo para poder ganhar a promoção da PeepCode, bom como eu sou mais ligeiro que uma lesma paraplégica, até decidir sobre o que escrever a promoção já tinha passado.

Num projeto que estava desenvolvendo para um cliente surgiu algo bem peculiar, pois tive que conectar a minha aplicação em 2 banco de dados distintos, logo imaginei que teria que enfrentar um "bicho de sete cabeças" mas depois de umas buscas na api do rails vi que fazer isto é muito simples, bom chega de bla bla blá e vamos ao que interessa.

Nível de Dificuldade: Babinha, Mamão com Açúcar
Utilidade: SDS (Só Deus Sabe)

A primeira coisa e a mais óbvia a ser feita é a conexão no database.yml

primario:
adapter: mysql
database: aplicacao
username: root
password: xyz
host: servidorprincipal

secundario:
adapter: mysql
database: dbauxiliar
username: admin
password: yyz
host: servidorsecundario

Agora o complicado, na classe ActiveRecord existe um método chamado de establish_connection que como o próprio nome diz 'estabelece uma conexão'

class Client < ActiveRecord::Base
establish_connection "primario"
end

class User < ActiveRecord::Base
establish_connection "secundario"
end

isto funcionará em todos os enviroments, claro desde que seja especificado no database.yml

primario_development:
# blablabla
primario_test:
# blablabla
primario_production:
# blablabla

secundario_development:
# blablabla
secundario_test:
# blablabla
secundario_production:
# blablabla

agora use a constante RAILS_ENV no método establish_connection

class Client < ActiveRecord::Base
establish_connection "primario_#{RAILS_ENV}"
end

class User < ActiveRecord::Base
establish_connection "secundario_#{RAILS_ENV}"
end

Bom é isto... levei mais tempo pensando no que escrever do que escrevendo em si, mas foi o primeiro artigo, não chega nem aos pés dos escritos pelo Akita ou os do Carlos Eduardo...

Comentem, estou preparado para "caneladas" e "chutes no saco" hehehehe...

Abraços

3 comentários:

felipespsousa disse...

assim que começa
parabens!
http://felipesantiago.net

Paulo Cassiano disse...

Pare de se depreciar! Teu artigo ficou bom. Mesmo quem tem pouca experiência pode escrever algo útil. Foi o teu caso. ;-)

Já que você falou do Akita, procure no blog dele um post onde ele "ensina a ser arrogante", pois é muito bom. Depois que eu o li, parei de me depreciar. Não é porque eu sou iniciante que não presto. Experiência só vem com o tempo, não tem jeito.

Forte abraço,

Nelci Lutz disse...

Embora eu não seja da área, não posso deixar de comentar que seus artigos são ótimos e muito úteis. Parabéns também pela organização do blog, está mais fácil de navegar e encontrar tudo!
Valeu pela lembrança, e por ter comentado no meu blog... é isso aí!
C ya buddy