Ruby on Rails:调试rake任务

时间:2010-04-18 20:53:10

标签: ruby-on-rails ruby debugging rake ruby-debug

当我写debugger时,它无法启动:

NoMethodError: undefined method `run_init_script' for Debugger:Module
from /usr/local/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb:239:in `debugger'
from (irb):4

如果我运行rake my:task --debugger,它会立即将我返回到控制台。如何调试rake任务?

6 个答案:

答案 0 :(得分:40)

我找到了解决方案。

$ gem install ruby-debug
$ ruby-debug rake my:task

或某些系统

$ rdebug rake my:task

答案 1 :(得分:26)

Andrey Kouznetsov的回答对我使用Ruby 1.9.3不起作用。 ruby-debug gem似乎不支持Ruby 1.9。我不得不使用调试器gem:https://github.com/cldwalker/debugger

  1. gem 'debugger'添加到我的Gemfile开发组。
  2. 运行bundle
  3. require 'debugger'添加到我的佣金任务的顶部。
  4. 在我的rake任务中添加对debugger的调用,我想要一个断点。
  5. 通常从命令行运行rake任务,例如:rake my:task

答案 2 :(得分:9)

我强烈推荐pry用于此

bundle install pry
require 'pry'
rake ...

佣金任务文件中:

binding.pry 

答案 3 :(得分:6)

这种方法对我不起作用。我刚刚在我的代码中添加了这个:

require 'ruby-debug'
# ... code ...
debugger

答案 4 :(得分:1)

ByeBug是2.0 +的另一个

https://github.com/deivid-rodriguez/byebug

答案 5 :(得分:1)

Visual Studio Code内置了非常好的调试器。如果有人发现这种搜索方式让它与rake一起工作,那么这是一个有效的配置:

{
    "name": "Debug a rake task",
    "type": "Ruby",
    "request": "launch",
    "useBundler": true,
    "cwd": "${workspaceRoot}",
    "program": "/usr/local/bin/rake",
    "args": ["all"]
}

这将运行rake任务all。您可能必须更改rake的路径,我没有找到在PATH中运行该路径的方法。