1

MRI 1.9 の使用

バックトレースが出力される原因となる例外が発生した場合、バックトレースがメソッド名だけでなくレシーバーとメソッドパラメーターの値を示していれば、デバッグが非常に簡単になることがよくあります。これを行う方法はありますか?

nil を想定していなかったライブラリ コードの奥深くに渡した場合や、2 つの文字列に互換性のないエンコーディングがあり、いくつかのルーチンがそれらを連結しようとしている場合などの状況を考えてみてください。

4

1 に答える 1

2

あなたはバックトレーサー宝石を使用することによって1.8.6でできます。

1.9はコールバックがわずかに壊れているため、まだ互換性がありません。必要に応じて、動作させることができるかもしれません。

デリゲートのようなものを使用して、単一のオブジェクトのパラメーターを確認できます。

クラスA
  def go a、b
  終わり
終わり

クラスA2

  def initialize * args
    @delegate = A.new * args
  終わり

  def method_missing meth、* args
    p "#{meth}への呼び出しを取得しました"、args.join('、')
    @ delegate.send(meth、* args)
  終わり

終わり

どの出力

「go2で」
「電話して」
「3、4」
于 2010-08-26T16:18:24.100 に答える