我正在使用 Octopus gem 在 Rails 中进行数据库分片。
如何获取特定于分片的数据库连接。例如,我在 shards.yml 中指定了一个名为“new_db”的分片。我如何获得它的数据库连接?原始连接。我知道如何更新/插入到这个分片,我只需要连接。
我尝试了以下方法,但没有成功。它只是为我提供了我在 database.yml 中指定的默认连接。
Octopus.using("new_db") do
connection = ActiveRecord::Base.connection
end
最佳答案
如果您有以下行为:
ActiveRecord::Base.connection.class
#=> ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
这表示你的连线并非透过八达通建立。
你应该有:
ActiveRecord::Base.connection.class
#=> Octopus::Proxy
相反...
正如momoshu指出的那样in this GitHub issue ,这可能是由您的应用程序使用
引起的 ActiveRecord::Base.establish_connection
I believe that if you call
establish_connection
, Octopus stops proxying connections regardless of configuration inshards.yml
orOctopus.enabled?
.
其他潜在客户
我无法让它工作,因为 gem 位于我的 gemfile 的顶部,奇怪的是,将 gem 'ar-octopus'
移动到 gemfile 的底部使它工作。
关于ruby-on-rails - 如何获取八达通分片的数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579541/