既存のメソッドをオーバーライドするときに、以前のメソッドを呼び出す方法

既存メソッドを override する場合、以前のメソッドも呼び出すには alias または alias_method を用いて別名保存しておきます。

alias_method の例

alias_method :original_foo, :foo

http://wota.jp/ac/?date=20060503#p01

ary.size = 10 の ary[10] を参照すると ary[0] を返す Array#[]。

class Array
  alias_method :org, :[]

  def [] (n)
    return org(0) if n > 9
    org(n)
  end
end

ary = Array.new(10){|i| i}
p ary     #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
p ary[10] #=> 0