MiyazakiResistanceの新バージョン0.1.6を公開しました。 インストールは今までと同じく以下で可能です(Gemcutterで公開しています)。

sudo gem install miyazakiresistance

主な変更点は以下のとおりです。

■MiyazakiResistanceのaliasとしてMRを使えるようにしました。 いちいちMiyazakiResistanceと入力するのが面倒なので、MRというaliasを使えるようにしました。

class AccessCount < MR::Base
  ...
end

■set_server, set_column, set_timeoutのaliasとしてserver, column, timeoutが使えるようになりました。 set_*と入力するのが冗長なので、それなしでも設定できるようにしました。もちろん、従来の指定方法でもかまいません。

class AccessCount < MR::Base
  server :localhost, 1978, :write
  server :slave_host, 1979, :standby
  column :count, :number
  column :name, :string
  timeout 1
end

■カラムの型として数値型を指定するときは、:numberを使用するようにしました 整数だけでなく実数も扱うので、指定する型名を:integerから:numberに変更しました。:integerを指定してもかまいません(内部では:numberとして扱われます)

■スキーマを途中で変更できるようになりました。 以前はTTが稼働を始めたあとにスキーマを変更することができませんでした。今バージョンからはスキーマの変更はいつでも自由に行えるようになりました。TTに存在しているカラムでも、MRクラスで指定していないカラムのデータは拾いません。

class AccessCount < MR::Base
  server :local, 1978, :write
  column :count, :number
end

AccessCount.create(:count => 1)
a = AccessCount.first
AccessCount.column(:name, :string)
a.name = "tsukasa"
a.save
AccessCount.find(a.id) #=> #<AccessCount:0xb7997e08 @id=1, @count=1, @name="tsukasa">

■nil値を指定できるようになりました 以前はnilを指定すると空文字になったり0が設定されたりしていました。今バージョンからはnil値が有効になっています。

他に、内部的な構造は大きく変更しています。複数のmoduleをincludeする方式から、単純にクラスの再定義を行う方式に変更しています。また、一部のロジックは別クラスとして定義しています。