おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

ActsAsReadonlyable の使い方

 Mysqlのレプリケーションを使って複数のDBサーバを構築しました。RailsでこのDBサーバにアクセスするために、ActsAsReadonlyableというプラグインをはじめて使ってみます。
 まずはプラグインのインストール。

script/plugin install svn://rubyforge.org/var/svn/acts-as-with-ro/trunk/vendor/plugins/acts_as_readonlyable  

 それからconfig/database.ymlの設定をします。

production:  
  database: rails_app_production  
  host:db_master  
  ....(省略)....  

  read_only_server_1:  
    database: rails_app_production  
    host: db_slave1  
    ....(省略)....  

  read_only_server_2:  
    database: rails_app_production  
    host: db_slave2  
    ....(省略)....  

 今回はDBが3台なので3台分の設定です。
 あとは、利用したいモデルで、

acts_as_readonlyable [:read_only_server_1, :read_only_server_2]  

と指定してあげるだけ。
 すべてのモデルで利用するのならば、config/environment.rbで、

class << ActiveRecord::Base  
  def inherited_with_read_only(child)  
    child.acts_as_readonlyable [:read_only_server_1, :read_only_server_2]  
    inherited_without_read_only(child)  
  end  
  alias_method_chain :inherited, :read_only  
end  

としてあげれば大丈夫です。超簡単だね。
LVSとかでスレーブサーバーを管理するなら、そのVIPに対してスレーブをひとつだけ設定すればいいだけです。