まつもと ゆきひろです

In message "[ruby-list:5632] undef method"
    on 97/12/11, Keiju ISHITSUKA <keiju / rational.com> writes:

|けいじゅ@日本ラショナルソフトウェアです.
|
|undefしたメソッドをもう一度生かすにはどうしたら良いのでしょうか?

undefは「まったくなかったことにする」操作ですからねえ.

これは

  * aliasで別の名前で保存しておき
  * undef
  * 終ったら再びaliasで戻す

というやり方でできるかもしれません.実装上何回も繰り返すこと
はお勧めしませんが.

別の方法としては

  * 1.1b1からあるModule#remove_methodを使う

というものがあります.この場合

   # 一時的に別の定義を得意メソッドに定義する
   eval 'class << f
          def foo; print "foo\n"; end
        end'

   # 元の定義に戻したい...
   eval 'class << f
          remove_method :foo
         end'

という感じですかね.
# 1.1b1ではキャッシュの不整合が起きるかも

                                まつもと ゆきひろ /:|)