riff plugin

オブジェクトの差分を出してくれるプラグイン

ruby script/plugin install http://tfletcher.com/svn/rails-plugins/riff/

でインストール

例えば、XとYというクラスがあった場合に、

class X < ActiveRecord::Base
  diff 'a1', 'a2'
end

class Y < ActiveRecord::Base
  diff 'a1', 'a2'
end

という風に定義してあったら、

>> x = X.new(:a1 => 'abc', :a2 => 3, :a3 => true, :a4 => Time.now)
>> y = Y.new(:a1 => 'ABC', :a2 => 3, :a3 => false, :a5 => "http://localhost:3000")

>> x.diff(y)
=> {:a1 => ['abc', 'ABC'] }

>> y.a2 = 5
>> x.diff(y)
=> {:a1 => ['abc', 'ABC'], :a2 => [3, 5] }

>> x.diff?(y)
=> true

>> x.diff(x)
=> {}

>> x.diff?(x)
=> false

という風に返してくれます。違うクラスのオブジェクトでも比較できるのは便利。