Connect multiple DB in rails project using AR


#1

Dear all

I have a rails project which database connection is defined in
database.yml. There is a table call “servers” which have about 40
records, which is a collection of database setting (i.e. Server.name,
Server.port, Server.host)

I know the way to establish multiple connection as below…

class A < ActiveRecord::Base
end
A.establish_connection(a) # a is the database config

class B < ActiveRecord::Base
end
B.establish_connection(b) # b is the database config

repeat and repeat…

However, how can I do this in a block? I have no idea to do so…Please
give me some light.

all_servers = Server.find(:all)
all_servers.each do |s|
h = {:host => “localhost”,
:adapter => “jdbc”,
:dialect => “sybase”,
:autocommit => false,
:driver => “com.sybase.jdbc3.jdbc.SybDataSource”,
:url => “jdbc:sybase:Tds:#{s.host):#{s.port}/LOE_DB”,
:username => “username”,
:password => “password”}

How to I write code to establish 40 connections using active record

here??

class “Server.name” < ActiveRecord::Base

end

“Server.name”.establish_connection(h)

end

Million thanks
Valentino


#2

Hi,

not sure what and why are you trying to do so, but looks like you
might want to use some simple metaprogramming to create model classes.

For example:
all_servers = Server.find(:all)
all_servers.each do |s|
h = {:host => “localhost”,
:adapter => “jdbc”,
:dialect => “sybase”,
:autocommit => false,
:driver => “com.sybase.jdbc3.jdbc.SybDataSource”,
:url => “jdbc:sybase:Tds:#{s.host):#{s.port}/LOE_DB”,
:username => “username”,
:password => “password”}

eval(“class #{Server.name} < ActiveRecord::Base
end”)
eval(Server.name).establish_connection(h)

end

A hack but should work more or less…

On 13 Sty, 11:46, Valentino L. removed_email_address@domain.invalid


#3

Hubert Lepicki wrote:

eval(“class #{Server.name} < ActiveRecord::Base
end”)
eval(Server.name).establish_connection(h)

end

A hack but should work more or less…

Thanks for your help
The reason I used this approach is I am building a dashboard application
to monitor over 40 data servers. I need to extract a lot of information
in those servers and display it through web.

If this approach is not appropriate, could someone suggest alternatives
to me?

Million thanks
Valentino