From: Inoue Date: 2001-07-21T09:49:59+09:00 Subject: [ruby-list:30686] Re: overwride method 井上です。 > もし、再定義を禁止したい場合は、RAAにある preserved というラ > イブラリを使うことで実現できます。 > http://www.ruby-lang.org/en/raa-list.rhtml?name=preserved 自作のライブラリを利用した後は、全て挙動がおかしくなる。(笑 Rubyの特性でもあるので、使うべきか思案しますね。 でも教えてくだしまして、ありがとうございます。 対策: preservedのライブラリは、自分の定義したメソッドの再定義を防ぐもので それ以前のメソッドの再定義を防ぐものではないみたいです。 手順1 raise "your method override!" if defined?(foo) def foo() print "テスト" end これで、自作ライブラリが他の標準ライブラリのメソッドを汚す失敗を防ぐことが できそうです。(想像) 手順2 preservedのライブラリを使用して、 preserved :foo とする。 これで、メソッドのオーバーライドはなくなるけど、Rubyの特性の1つが失われます ね。 この対策は余程、汚いソースを書く場合以外に用いてはいけない。 名前の付け方の勉強になりますね。 皆さん、参考になりました。 ありがとうございました。