Ruby で組み込みクラスのメソッドを上書きする

Tomohiro wrote this on Apr 10, 2011

「Rubyは君を信頼する。Rubyは君を分別のあるプログラマとして扱う。Rubyはメタプログラミングのような強力な力を与える。ただし、大いなる力には、大いなる責任が伴うことを忘れてはいけない」 - まつもとゆきひろ

Ruby では下記のように,例え組み込みクラスでもメソッドを別名にしたり,オーバライドしたりと,モンキーパッチングが自由に出来る. ただし悪用は厳禁.

class << Time
  alias_method :now_original, :now

  def now
    puts 'override'
  end
end

puts Time.now
puts Time.now_original

References

メタプログラミングRuby
Paolo Perrotta
アスキー・メディアワークス
売り上げランキング: 29046