おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

alias_method_chainを使ってみる

 会社の同僚の方に一度教えてもらったのですが、うろ覚えだったので復習しておきます。
alias_method_chainは、既存のメソッドを継承クラスなんて作らなくてもオーバーライドしてくれます。メソッドの再定義と違うのは、オーバーライド前のメソッドも呼べてしまうところ。
 まずは、メソッドを定義します。

class Integer  
  def next_with_goodby  
    next_without_goodby.to_s + ", and goodby"  
  end  
  alias_method_chain :next, :goodby  
end  

こうしておくと、

3.next #=> "4, and goodby"  

となります。ポイントはnext_without_goodbyというメソッド。これがオーバーライド前のメソッドになります。