Som*_*Guy 6 ruby database activerecord ruby-on-rails ruby-on-rails-3
我有一个RoR应用程序,适用于主要的RoR数据库.我还想以一种方式连接到任意数据库,这样我就不会为每个新的HTTP请求重新创建数据库连接.根据我的研究,它看起来像连接池是要走的路.
但是,我无法弄清楚如何创建池本身:
config = ActiveRecord::ConnectionAdapters::ConnectionSpecification.new( {
"adapter" => "postgresql",
"host" => "localhost",
"port" => 9000,
"database" => "foo_test",
"username" => "foo",
"password" => "bar",
"pool" => "5",
"timeout" => "3000"
})
my_connection_pool = ActiveRecord::ConnectionAdapters::ConnectionPool.new(config)
Run Code Online (Sandbox Code Playgroud)
NameError的错误:未初始化的常量ActiveRecord :: ConnectionAdapters :: ConnectionSpecification.Interstingly ActiveRecord :: ConnectionAdapters :: ConnectionPool工作正常(但没有正确的配置对象).
我该怎么办?
而且,这些是用来解决我的问题的正确方法吗?
根据您的用例,Rails 可能会自动为您执行此操作。每个ActiveRecord::Base
子类都会查找继承链以找到其池,因此
class Foo < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
使用ActiveRecord::Base
连接池,但是
class Bar < ActiveRecord::Base
establish_connection database: 'some_other_db'
end
class BarSub < Bar
end
Run Code Online (Sandbox Code Playgroud)
都会使用Bar
池连接到“some_other_db”。
我不太记得了,但我认为每次您使用ActiveRecord::Base.establish_connection
(或establish_connection
在任何子类上)时,它都会创建一个新池。否则的话就是荒谬的!