Можно ли сделать значения параметров метода отображения ruby ​​в обратном следе? - PullRequest
1 голос
/ 26 августа 2010

Использование МРТ 1,9

Когда возникает исключение, которое приводит к печати обратной трассировки, зачастую было бы намного проще отладить, если бы обратная трассировка показала получателя и значения параметров метода, а также имя метода. Есть ли способ сделать это?

Подумайте о таких ситуациях, как передача нуля вглубь библиотечного кода, который не ожидал этого, или когда две строки имеют несовместимые кодировки, и какая-то подпрограмма пытается объединить их

1 Ответ

2 голосов
/ 26 августа 2010

вы можете использовать 1.8.6, используя гем backtracer.

1.9 имеет слегка сломанные обратные вызовы, поэтому пока не совместим.При желании я мог бы заставить его работать.

Вы можете использовать что-то вроде делегата и видеть параметры для одного объекта:

class A
  def go a, b
  end
end

class A2

  def initialize *args
    @delegate = A.new *args
  end

  def method_missing meth, *args
    p "got call to #{meth}", args.join(', ')
    @delegate.send(meth,*args)
  end

end

, который выводит

"in go2"
"got call to go"
"3, 4"
...