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

ant*_*ome 1 ruby debugging ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

它说

*** No sourcefile available for (irb)
Run Code Online (Sandbox Code Playgroud)

很快我终于通过irb代码而不是代码my_method.

jet*_*roo 5

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

m = MyModel.last
m.class.send(:define_method, :debug_my_method){debugger; my_method}
m.debug_my_method
Run Code Online (Sandbox Code Playgroud)

这应该在irb上做(只是测试它可能在rails控制台上)