如何调试Ruby';你缺少什么方法?
让我澄清一下 我有一个处理XML文件的类。此类实现了方法,并使用作为标记标识符传递的方法,然后返回表示该标记的XML节点的对象。代码大致如下所示:如何调试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中记
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调试时,在变量之后进行检查
通常是个好主意。