有时当我在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
。
答案 0 :(得分:5)
这听起来有点像元编程,你可以在模型中在运行时注入一个调试方法,它会在方法调用之前添加调试语句,这样你就可以根据需要检查调用,如:
m = MyModel.last
m.class.send(:define_method, :debug_my_method){debugger; my_method}
m.debug_my_method
这应该在irb上进行(仅在rails控制台上测试)