3

method_missing が定義されているクラスを知りたいです。オブジェクトで定義されています。

階層に沿ってどのクラスがそれをオーバーライドしているかを知るにはどうすればよいですか?

4

1 に答える 1

6

method を使用UnboundMethod#ownerして、メソッドが実装されている場所を確認できます。

class A
  def method_missing(*args)
    # do something
  end
end
method = A.instance_method(:method_missing)
method.owner
# => A

注: メソッドがモジュールに実装されている場合 (後でクラス階層のどこかに混合されます)、ownerはこのモジュールを返します。

于 2014-11-25T08:24:14.287 に答える