2017-04-02 19 views
1

最近、検索/読み取り操作のほとんどでスレーブデータベースを使用すると考えました。私たちはすべての読者の要求を奴隷に送る予定はありません。スレーブデータベースにヒットする検索クエリはほとんどありませんOctopus gemがアクティブなレコード関係で動作していない

利用可能なほとんどの宝石を試しましたが、octopus, octoshark, db-charmer, makara, knockoffは正しく動作していません。

For example on Octopus (other gems too)は、以下の大きな問題

Octopus.using(:slave1) do User.first endです。

これはうまく動作し、 "slave1"を使用します。

しかし、なぜ以下が機能していないのかわかりません。

Octopus.using(:slave1) do User.where(id: 1) end

この1つはスレーブ1を使用していないが、それはマスター・データベースに発射し、当社の検索クエリのほとんどがこの形式です。

これまでは非常にイライラしています。どんな助けでも大歓迎です。

答えて

0

おそらくUserモデルでデータベース接続を確立しようとしていますか?

我々は現在、生産にタコを使用していると私は whereユースケースは、私たちのために働くかなり確信している
class User < ActiveRecord::Base 
    octopus_establish_connection(db_url_to_slave) 
    .. 
end 

:P

このsection in the docsは、あなたがより多くの情報が必要な場合には、アプローチを詳述。

0

多くの苦労の末、User.where(id: 1)はアクティブレコード関係を作成するだけですが、クエリはoctopusの外で実行されることがわかりました。だから私がUser.where(id: 1).to_aをしたとき、魔法のようにすべてが私のためにうまくいくようになった。

私はこのトリックで複数の作品を試してみました。私が理解するのに多くの時間がかかりました。

関連する問題