红宝石.如何知道定义了哪个类实例方法?

Zha*_* Yu 3 ruby metaprogramming class instance method-missing

我想知道定义了哪个类method_missing.它在Object中定义.

如何确定层次结构中的哪个类覆盖它?

Mar*_*pka 6

您可以使用UnboundMethod#owner方法来检查方法的实现位置:

class A
  def method_missing(*args)
    # do something
  end
end
method = A.instance_method(:method_missing)
method.owner
# => A
Run Code Online (Sandbox Code Playgroud)

注意:如果该方法在模块中实现(稍后将其混合到某个类层次结构中),owner则将返回此模块.