2012-01-18 14 views
1

これを少し説明してください...Rubyのmethod_missingはどのようにデバッグできますか?

私はXMLファイルを扱うクラスを持っています。このクラスはmethod_missingを実装し、渡されたメソッドをタグの識別子として使用し、そのタグのXMLノードを表すオブジェクトを返します。コードは、多かれ少なかれ、このようなものです:

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

でも、私は奇妙な何かをやった、そして時にはmパラメータはメソッド呼び出しに送信されていません。

どのような呼び出しが原因であるのかを特定する方法はありますか?

私が考えることができる1つの方法は、メソッド呼び出し自体を記録することですが、method_missingの中からどのようにすればいいですか?

+0

問題の原因となったリクエストが分かっている場合は、 'abort object_name.to_yaml'を使用できます。 –

答えて

1

非常に粗製の方法は、右のあなたのXmlNode ...線の上に

puts caller 

を置くことによって、出力にコールスタックになります。これはコールスタックを出力し、誰がメソッドを呼び出したかを見ることができます。

+0

ありがとうございました。それはかなり原油であり、直接私を犯人に向けることはありませんでしたが、それは容疑者の数を大幅に減らしました。 – cassianoleal

+0

+1ですが、printfのデバッグ時に変数の後ろに 'inspect'を付けることは良い考えです。 –

関連する問題