おおいしつかさ


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

FreshConnectionの0.2.0をリリースしました

FreshConnectionのバージョン0.2.0をリリースしました。

https://github.com/tsukasaoishi/fresh_connection/tree/v0.2.0

今回のリリースでは以下の機能を追加しました。また、簡単ですがテストコードも追加しています。Rails4.1でもテスト済みです。

■複数のスレーブ群を指定可能に
以前までは、ひとつのスレーブ群しか使えませんでしたが、今バージョンからは複数のスレーブ群を指定可能になりました。

production:  
  adapter: mysql2  
  encoding: utf8  
  reconnect: true  
  database: kaeru  
  pool: 5  
  username: master  
  password: master  
  host: localhost  
  socket: /var/run/mysqld/mysqld.sock  

  slave:  
    username: slave  
    password: slave  
    host: slave  

  admin_slave:  
    username: slave  
    password: slave  
    host: admin_slaves  

slaveで指定されたロードバランサの先のスレーブ群がデフォルトでは使用されます。
admin_slaveで指定されたものを使いたい場合、それを使うモデルで以下のように宣言します。

class AdminUser < ActiveRecord::Base  
  establish_fresh_connection :admin_slave  
end  

これで、AdminUserのselect系クエリは、admin_slaveで指定されたロードバランサにふられます。

establish_fresh_connectionの指定は子クラスにも影響します。

class Parent < ActiveRecord::Base  
  establish_fresh_connection :admin_slave  
end  

class AdminUser < Parent  
end  

class Benefit < Parent  
end  

こう書くと、AdminUserとBenefitモデルはadmin_slaveロードバランサへクエリを投げるようになります。

デフォルトはslaveで指定したものですが、これは内部的には以下のように宣言しているだけです。

ActiveRecord::Base.establish_fresh_connection :slave  

なので、同様の宣言をすればデフォルトの向き先を任意のものに変えることができます。

■スレーブDBを使用しないモデルの宣言方法を変更
以前までのバージョンでは、FreshConnection::SlaveConnection.ignore_modelsでスレーブDBを使用しないモデルを宣言していました。
今バージョンからは、スレーブDBを使用しないモデルの中で以下のように宣言すればいいようになりました。

class SomethingModel < ActiveRecord::Base  
  master_db_only!  
end  

これで、SomethinfModelモデルはマスターDBだけを使用するようになります。
また、この宣言も子クラスに影響します。master_db_only!宣言をしたモデルの子クラスも、マスターDBだけを使用するようになります。

■独自のconnection_managerの指定
以前までは、FreshConnection::SlaveConnection.connection_manager= で宣言していましたが、今バージョンからは以下のようになりました。

FreshConnection.connection_manager = MySlaveConnection  

今、rubygems.orgの 自分のページを見てみたら、FreshConnectionが一番ダウンロードされていました。まあ、戦闘力5くらいなのですが。

また、今バージョンにあわせたEbisuConnectionの新バージョンもリリースしています。
https://github.com/tsukasaoishi/ebisu_connection/tree/v0.1.0