Ruby on Rails:debuggingrake任务

当我编写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 ,它会立即返回到控制台。 如何debuggingrake任务?

Andrey Kouznetsov的答案对我来说并不适用于Ruby 1.9.3。 ruby-debug gem似乎不支持Ruby 1.9。 我不得不使用debugging器gem: https : //github.com/cldwalker/debugger 。

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

我find了解决scheme。

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

或在某些系统上

 $ rdebug rake my:task 

我强烈build议这个

 bundle install pry require 'pry' rake ... 

在你的耙子任务文件中:

 binding.pry 

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

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

ByeBug是2.0+的另一个

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

Visual Studio Code具有相当不错的debugging器,内置。 如果有人发现这种search方式使它与耙子一起工作,这里有一个工作的configuration:

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

这将全部运行rake任务。 你可能不得不改变耙路,我没有find方法来运行PATH中的一个。