true_readonlyable

既存のmemberテーブルをRailsアプリから読むんだけど、共有の大事な大事なテーブルなので間違っても更新したくなかった訳です。で、そういえば acts_as_readonlyable なんて素っ頓狂な名前のプラグインがあったなーと思い出しまして、ちょっと調べたんだけど、これ嘘じゃんね。いや、プラグインの名前が。

=== Usage
r = Fruit.find(:first)  # executes against the read_only db
r.field = 'value'
r.save!  # executes against the read_write db

違うんだよ、read_only dbが駄目とかread_write dbならいいとかじゃなくて、そもそも一切更新したくないんだよ。

ってことで本当の readonlyable 作った。

# vendor/plugins/true_readonlyable/lib/true_readonlyable.rb
class ActiveRecord::Base                                                             
  class <<self                                                                       
    def true_readonlyable                                                            
      before_save {raise ActiveRecord::RecordNotSaved.new('read only')}                            
    end                                                                              
  end                                                                                
end 

・・・これはないな。

$ ./script/destroy plugin true_readonlyable
          rm  vendor/plugins/true_readonlyable/test/test_helper.rb
          rm  vendor/plugins/true_readonlyable/test/true_readonlyable_test.rb
          rm  vendor/plugins/true_readonlyable/tasks/true_readonlyable_tasks.rake
          rm  vendor/plugins/true_readonlyable/lib/true_readonlyable.rb
           :