あおきです。
In mail "[ruby-dev:14409] Re: [Patch] pp.rb and debug.rb"
Tanaka Akira <akr / m17n.org> wrote:
> 今回の用途には singleton_methods(true) で済むのでとくに問題はないので
> すが、(Object#extend によってモジュールのメソッドを特異メソッドとして
> 定義したときの)特異メソッドがどのモジュールで定義されているのかを調べ
> る方法はあるんでしょうか?
extend は特異クラスに include しているだけなので、特異メソッドが
定義されていたら
(class << obj; self end).included_modules
で obj に extend されたモジュールが取れます。
ただし特異メソッドが定義されていない時にこれをやるとその瞬間に
obj の特異クラスが作られてクラスが無駄に増加してしまいます。
-------------------------------------------------------------------
青木峰郎