2013-12-14 24 views
1

我正在使用八達通寶石在Rails中進行數據庫分片。如何獲取八達通分片的數據庫連接?

如何獲得特定於分片的數據庫連接。例如,我在我的shards.yml中指定了一個名爲「new_db」的分片。我如何獲得數據庫連接?原始連接。我知道如何更新/插入此碎片,我只需要連接。

我試過以下無濟於事。它只是給了我在我的database.yml中指定的默認連接。

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

end 

回答

0

如果你有這樣的行爲:

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

這意味着您的連接不是通過八達通成立。

你應該有:

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

,而不是...


由於momoshu指出in this GitHub issue,它可能會使用你的應用程序引起的

ActiveRecord::Base.establish_connection 

我相信如果您撥打establish_connection,Octopus會停止 代理連接,不管shards.ymlOctopus.enabled?中的配置如何。


其他導致

我不能讓它工作,因爲創業板是在我的Gemfile的頂部,奇怪的是,移動gem 'ar-octopus'到Gemfile中的底部使工作。