Criar multiplas conexões permanentes

9 views
Skip to first unread message

 Victor Sobreira

unread,
Jul 2, 2009, 3:06:32 PM7/2/09
to rail...@googlegroups.com
Bom tarde a todos.
Vim aqui pq tive umas duvidas e sou iniciante.

Estou tentando fazer uma série de testes no raisl 2.3.2
A primeira delas foi poder trabalhar com vários bancos sem precisar fazer uma nova requisição a cada requerimento.

Fiz um before_filter no ApplicationController como seguinte codigo

before_filter :define_connection
  
  private
  
  def define_connection
    
    database = request.env['SERVER_NAME'].downcase
    database = /app\.(.+)/i.match(database)
    
    if database[1].nil? == false
      database = database[1].gsub('.','_')
      ActiveRecord::Base.establish_connection database
    end

  end

-- 
Atenciosamente,
 Victor Sobreira

Rodolfo S. Carvalho

unread,
Jul 2, 2009, 3:10:15 PM7/2/09
to rail...@googlegroups.com
2009/7/2  Victor Sobreira <vict...@gmail.com>:
E qual era a dúvida mesmo?
--
 Rodolfo Carvalho
Web Developer
rodol...@gmail.com

 Victor Sobreira

unread,
Jul 2, 2009, 7:27:04 PM7/2/09
to rail...@googlegroups.com
Eu quero fazer as conexões permanentes.
Pq da forma que eu fiz.
Ele faz uma conexão a cada request.



2009/7/2 Rodolfo S. Carvalho <rodol...@gmail.com>



--
Atenciosamente,
 Victor Sobreira

Celular: (88) 8812-6922 / (85) 8719-3391 / (85) 9901-7397
Msn / Gtalk: vict...@gmail.com

Regis Mesquita

unread,
Jul 2, 2009, 10:08:36 PM7/2/09
to rail...@googlegroups.com
 Victor Sobreira escreveu:
> Eu quero fazer as conexões permanentes.
> Pq da forma que eu fiz.
> Ele faz uma conexão a cada request.
>
>
>
> 2009/7/2 Rodolfo S. Carvalho <rodol...@gmail.com
> <mailto:rodol...@gmail.com>>
>
>
> 2009/7/2  Victor Sobreira <vict...@gmail.com
> <mailto:vict...@gmail.com>>:
> > Bom tarde a todos.
> > Vim aqui pq tive umas duvidas e sou iniciante.
> > Estou tentando fazer uma série de testes no raisl 2.3.2
> > A primeira delas foi poder trabalhar com vários bancos sem
> precisar fazer
> > uma nova requisição a cada requerimento.
> > Fiz um before_filter no ApplicationController como seguinte codigo
> > before_filter :define_connection
> >
> > private
> >
> > def define_connection
> >
> > database = request.env['SERVER_NAME'].downcase
> > database = /app\.(.+)/i.match(database)
> >
> > if database[1].nil? == false
> > database = database[1].gsub('.','_')
> > ActiveRecord::Base.establish_connection database
> > end
> > end
> > --
> > Atenciosamente,
> >  Victor Sobreira
> >
> > >
> >
>
>
> E qual era a dúvida mesmo?
> --
>  Rodolfo Carvalho
> Web Developer
> rodol...@gmail.com <mailto:rodol...@gmail.com>
>
>
>
>
>
> --
> Atenciosamente,
>  Victor Sobreira
>
> Celular: (88) 8812-6922 / (85) 8719-3391 / (85) 9901-7397
> Msn / Gtalk: vict...@gmail.com <mailto:vict...@gmail.com>
>
> >
já pensou em fazer da maneira padrão?

Adicionando uma entrada no config/database.yml direcionando para a base
de dados desejada , criando um modelo para ela e então criando modelos
para esse novo modelo?

Regis Mesquita

unread,
Jul 2, 2009, 10:17:24 PM7/2/09
to rail...@googlegroups.com
 Victor Sobreira escreveu:
> Eu quero fazer as conexões permanentes.
> Pq da forma que eu fiz.
> Ele faz uma conexão a cada request.
>
>
>
> 2009/7/2 Rodolfo S. Carvalho <rodol...@gmail.com
> <mailto:rodol...@gmail.com>>
>
>
> 2009/7/2  Victor Sobreira <vict...@gmail.com
> <mailto:vict...@gmail.com>>:
> > Bom tarde a todos.
> > Vim aqui pq tive umas duvidas e sou iniciante.
> > Estou tentando fazer uma série de testes no raisl 2.3.2
> > A primeira delas foi poder trabalhar com vários bancos sem
> precisar fazer
> > uma nova requisição a cada requerimento.
> > Fiz um before_filter no ApplicationController como seguinte codigo
> > before_filter :define_connection
> >
> > private
> >
> > def define_connection
> >
> > database = request.env['SERVER_NAME'].downcase
> > database = /app\.(.+)/i.match(database)
> >
> > if database[1].nil? == false
> > database = database[1].gsub('.','_')
> > ActiveRecord::Base.establish_connection database
> > end
> > end
> > --
> > Atenciosamente,
> >  Victor Sobreira
> >
> > >
> >
>
>
> E qual era a dúvida mesmo?
> --
>  Rodolfo Carvalho
> Web Developer
> rodol...@gmail.com <mailto:rodol...@gmail.com>
>
>
>
>
>
> --
> Atenciosamente,
>  Victor Sobreira
>
> Celular: (88) 8812-6922 / (85) 8719-3391 / (85) 9901-7397
> Msn / Gtalk: vict...@gmail.com <mailto:vict...@gmail.com>
>
> >
Explicando melhor

crie a entrada:

externa_development no yml , especificando o schema (tem nos comentários
do yml explicando como e coloque os outros dados.

crie um modelo que vai ser utilizado para se comunicar com essa base:


|class Externa < ActiveRecord::Base
self.abstract_class = true # Estamos colocando ela como abstrata para
poder herdar nossos modelos dela.
establish_connection :externa_development
end #classe retirada do tutorial Rubynaut e quase não modificada ,
http://www.rubynaut.net/articles/2008/05/31/how-to-access-multiple-database-in-rails

class whatever < Externa # tabela whatever na base de dados Externa1
|end

e pronto , pode usar como qualquer outro modelo do rails , agora resta
saber se vai ficar gerando multiplas conexões, é assim que venho fazendo
quando desejo multiplas bases.

Wesley Oliveira

unread,
Jul 2, 2009, 10:17:51 PM7/2/09
to rail...@googlegroups.com
Ou pode criar um pool de conexão.

2009/7/2 Regis Mesquita <actua...@gmail.com>



--
Nenhum de nós é tão bom quanto TODOS NÓS JUNTOS!

Rafa - www.cearaonrails.org

unread,
Jul 2, 2009, 10:32:36 PM7/2/09
to rail...@googlegroups.com
Caras o exemplo mais bonito que vi em tutoriais foi esse:

http://ggarnier.wordpress.com/2008/03/11/acessando-multiplos-bancos-de-dados-em-rails/

2009/7/2 Wesley Oliveira <waeol...@gmail.com>
Reply all
Reply to author
Forward
0 new messages