どうやら、Octopus gem を使用して Postgres レプリケーションを行う場合、すべてがプラグ アンド プレイである必要があります。しかし、私が間違っていることを見つけることができないようです。
これは私のconfig/shards.yml
octopus:
environments:
- development
replicated: true
development:
slave1:
adapter: postgresql
host: localhost
database: slaveapp_development
username: pguser
password: pgpass
AR モデルProvider
(Rake タスクを介して各アプリでまったく同じテーブルを作成します) スレーブに同期/複製したい:
class Provider < ActiveRecord::Base
has_many :products
replicated_model()
end
Rails サーバー経由で両方のアプリを起動し、Masterappのコンソールに入り、そこから:
> Provider.using(:slave1).create({provider_params...})
#=> works! I get a new record in slave1's DB.
> Provider.using(:master).create({provider_params...})
#=> works partly. Creates record only in master's DB.
問題は、呼び出すときに次のことProvider.using(:master)...
を期待していることです。
1 - masterの DBにレコードを作成します。
2 - slave1の DBで同じレコードを複製します。<--- これは起こっていません。