2012年09月28日

Ruby on Rails Rails3 外部DB参照 ~別DB参照~

外部DB参照とは?


通常database.ymlに参照先DBを記載すると思いますが、
基本的にproductionで起動したならばproductionで設定した参照先しか見に行きません。
しかし、負荷軽減の関係でSlaveにSELECTだけはしたいときなどがあります。
そのときに、production以外の参照先を指定する事を外部DB参照といっています。

環境


Rails 3.0.1
Mysql

設定



$ cd RAILS_ROOT
$ vi config/database.yml # production_slaveを追加

production:
adapter:mysql2
...
host:192.168.1.1
...

production_slave:
adapter:mysql2
...
host:192.168.1.2
...

$ vi app/model/hoge.rb

def self.master_connection(conf)
establish_connection(conf.to_sym)
Rails.configuration.database_configuration[conf]
end



実行



$ cd RAILS_ROOT
$ bundle exec ruby c production

Hoge.find 1 # 192.168.1.1を参照
Hoge.master_connection("production_slave")
Hoge.find 2 # 192.168.1.2を参照

posted by RicK at 19:09| Comment(0) | TrackBack(0) | 日記