ruby-on-rails - 如何获取八达通分片的数据库连接?

标签 ruby-on-rails ruby octopus

我正在使用 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 in shards.yml or Octopus.enabled?.


其他潜在客户

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

关于ruby-on-rails - 如何获取八达通分片的数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579541/

相关文章:

ruby - 在 openSUSE 11.3 上安装 RMagick - gem 无法构建其扩展

Octopus 中的 Powershell 执行

ruby-on-rails-4 - 使用 Rails ar-octopus gem 执行事务

ruby-on-rails - 测试没有通过

ruby-on-rails - 字符串转换为 ActionDispatch::Http::UploadedFile

ruby-on-rails - Rails 3 路由 : add action to all resources in namespace

ruby-on-rails - 使用反引号从 Rails 应用程序中启动另一个 Rails 服务器

ruby-on-rails - destroy_user_session 导致在 Ruby 中使用 Devise 显示操作

ruby - 只是为了好玩,我如何编写一个 ruby​​ 程序,一次缓慢地打印到 stdout 一个字符?

java - 通过java连接到电话系统