
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:
assim que começa
parabens!
http://felipesantiago.net
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,
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
Postar um comentário