如何获取Octopus分片的数据库连接?

时间:2013-12-14 04:05:11

标签: ruby-on-rails ruby octopus

我正在使用Octopus gem在Rails中进行DB分片。

如何获取特定于分片的数据库连接。例如,我在shards.yml中指定了一个名为“new_db”的分片。如何获取数据库连接?原始连接。我知道如何更新/插入此分片,我只需要连接。

我尝试了以下但无济于事。它只是给了我在database.yml中指定的默认连接。

Octopus.using("new_db") do 
    connection = ActiveRecord::Base.connection

end

1 个答案:

答案 0 :(得分:1)

如果您有此行为:

ActiveRecord::Base.connection.class
#=> ActiveRecord::ConnectionAdapters::PostgreSQLAdapter

这意味着您的连接不是通过八达通建立的。

你应该:

ActiveRecord::Base.connection.class
#=> Octopus::Proxy

而不是......

正如 momoshu 指出in this GitHub issue,它可能是由您的应用使用

引起的
 ActiveRecord::Base.establish_connection  
  

我相信如果你致电establish_connection,八达通会停止   代理连接,无论shards.yml中的配置如何   Octopus.enabled?

其他线索

我无法使其工作,因为gem位于我的gemfile的顶部,奇怪的是,将gem 'ar-octopus'移动到gemfile的底部使其工作。