パフォーマンスよりも、Rubyスクリプトっぽさを優先することにしました。Koya-0.2のスクリプトは動かなくなるけど、ユーザ数は0だから気にしない。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/prb/koya/
変更点
クラスの継承関係をあてにしたスクリプトが動かないけど、dRubyでそんなに問題になってないようなのでたぶん困らない。sample/以下を更新するのがめんどくさいので0.3はしばらくアーカイブしない予定。
昔。インスタンス変数じゃなかったのでうんざり。
class Counter < Koya::KoyaObject def initialize self.value = 0 end koya_attr :value def up transaction do self.value = self.value + 1 end end end
さっきの変更
class Counter < Koya::KoyaObject def initialize @value = 0 end attr_reader :value def up transaction do @value +=1 end end end
実行するにはこんな風にするんだけど、Counter.newの結果はCounterのインスタンスそのものではなく、インスタンスへの参照が返ります。transactionの中でしかインスタンスが生成できないのは従来通り。
s = Koya::Store.new('test.db') s.transaction do unless s.root['count'] counter = Counter.new p counter.class ## Koya::KoyaRef s.root['count'] = counter end end counter = s.root['count'] counter.up p counter.value