モンキーパッチ

ソースコードに手をいれず振る舞いを変える手法、モンキーパッチって本当にできるのか確かめたときのメモ。
Rails3系だと、APP_ROOT/config/initializersにパッチを入れる。

patch.rb

class UsersController < ApplicationController
  def index
    raise "huge"
    @users = User.all
  end
  def new
    @user = User.new
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @user }
    end
  end    
end

反映させるにはサーバを再起動する必要がある。
このパッチを当てるとUserContollerのメソッドがpatch.rbのUserControllerに"すべて"置き換わった。(update、edit、destroyが消えた。)
メソッド単位で上書きしたい時はaliasとかMix-inとか使うのかな。

参考:http://d.hatena.ne.jp/miau/20110516/1305555914
http://d.hatena.ne.jp/namutaka/20110222/1298388814