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

时间:2014-11-25 08:19:32

标签: ruby class metaprogramming instance method-missing

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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