如何调试Ruby';你缺少什么方法?

如何调试Ruby';你缺少什么方法?,ruby,debugging,metaprogramming,Ruby,Debugging,Metaprogramming,让我澄清一下 我有一个处理XML文件的类。此类实现了方法,并使用作为标记标识符传递的方法,然后返回表示该标记的XML节点的对象。代码大致如下所示: def method_missing(m, *args, &block) XmlNode.new(@xml.at_css(m.to_s.upcase)) end 不过,我做了一些奇怪的事情,有时m参数没有被发送到方法调用 有没有办法让我确定哪些电话是罪魁祸首 我可以想到的一种方法是记录方法调用本身,但是如何从方法\u missing中记

让我澄清一下

我有一个处理XML文件的类。此类实现了方法,并使用作为标记标识符传递的方法,然后返回表示该标记的XML节点的对象。代码大致如下所示:

def method_missing(m, *args, &block)
  XmlNode.new(@xml.at_css(m.to_s.upcase))
end
不过,我做了一些奇怪的事情,有时
m
参数没有被发送到方法调用

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


我可以想到的一种方法是记录方法调用本身,但是如何从方法\u missing中记录呢?

一种非常粗糙的方法是通过将

puts caller

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

一种非常粗糙的方法是将

puts caller

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

如果您知道是哪个请求导致了问题,那么您可以使用
中止对象\u name。to\u yaml
如果您知道是哪个请求导致了问题,那么您可以使用
中止对象\u name。to\u yaml
谢谢。它非常粗糙,没有直接指向罪犯,但它大大减少了嫌疑犯的数量。+1但在printf调试时,在变量之后进行
检查通常是个好主意。谢谢。它非常粗糙,没有直接指向罪犯,但它大大减少了嫌疑犯的数量。+1但在printf调试时,在变量之后进行
检查
通常是个好主意。