【问题标题】:Call a method and initiate debugging from the rails console without editing the source code?在不编辑源代码的情况下调用方法并从 Rails 控制台启动调试?
【发布时间】:2013-06-14 20:38:21
【问题描述】:

有时当我在 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

【问题讨论】:

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


【解决方案1】:

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

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

这应该在 irb 上执行(刚刚在 may rails 控制台上测试过)

【讨论】:

  • 不错的答案!完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多