让我稍微澄清一下。。。
我有一个处理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的正上方。。。线这将输出调用堆栈,您可以看到是谁调用了该方法。