调用方法并从rails控制台启动调试而不编辑源代码?

时间:2013-06-14 20:38:22

标签: ruby-on-rails ruby debugging irb rails-console

有时当我在rails控制台中工作时,我发现我想在调试器中逐步执行特定方法(来自我的rails应用程序)。在过去,我通过在方法的源代码中临时添加调试器语句,然后从控制台调用该方法来完成此操作。

有没有办法可以进入"来自控制台的方法,无需编辑源代码?

这在共享开发服务器上会特别好用,因此我不需要使用vi输入随机调试器语句,并记得稍后将其删除。

我尝试了以下内容,但毫不奇怪它不起作用:

$ rails c --debugger
=> Debugger enabled
Loading development environment (Rails 3.2.13)
irb(main):001:0> def startdebug
irb(main):002:1>   debugger
irb(main):003:1>   MyModel.last.my_method
irb(main):004:1> end
=> nil
irb(main):005:0> startdebug

它说

*** No sourcefile available for (irb)

我很快就会逐步完成irb代码,而不是my_method

1 个答案:

答案 0 :(得分:5)

这听起来有点像元编程,你可以在模型中在运行时注入一个调试方法,它会在方法调用之前添加调试语句,这样你就可以根据需要检查调用,如:

m = MyModel.last
m.class.send(:define_method, :debug_my_method){debugger; my_method}
m.debug_my_method

这应该在irb上进行(仅在rails控制台上测试)