如何调试 Ruby 的method_missing?



让我稍微澄清一下。。。

我有一个处理XML文件的类。此类实现method_missing,并使用作为标记的标识符传递的方法,然后返回一个表示该标记的XML节点的对象。代码或多或少是这样的:

def method_missing(m, *args, &block)
  XmlNode.new(@xml.at_css(m.to_s.upcase))
end

不过,我做了一些奇怪的事情,有时m参数没有被发送到方法调用。

有没有办法让我确定哪一个电话是罪魁祸首?

我可以想到的一种方法是记录方法调用本身,但我如何从method_missing中做到这一点?

一种非常粗糙的方法是通过放置来输出调用堆栈

puts caller

就在XmlNode的正上方。。。线这将输出调用堆栈,您可以看到是谁调用了该方法。

最新更新