And*_*sov 41 ruby debugging rake ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)
如果我跑rake my:task --debugger,它会立即将我返回到控制台.如何调试rake任务?
And*_*sov 40
我找到了解决方案.
$ gem install ruby-debug
$ ruby-debug rake my:task
Run Code Online (Sandbox Code Playgroud)
或者在某些系统上
$ rdebug rake my:task
Run Code Online (Sandbox Code Playgroud)
Lir*_*dav 26
Andrey Kouznetsov的回答对我使用Ruby 1.9.3不起作用.ruby-debug gem似乎不支持Ruby 1.9.我不得不使用调试器gem:https://github.com/cldwalker/debugger.
gem 'debugger'到我的Gemfile开发组.bundle.require 'debugger'到我的rake任务的顶部.debugger在我的rake任务中添加一个我想要断点的地方.rake my:task.我强烈推荐这个撬
bundle install pry
require 'pry'
rake ...
Run Code Online (Sandbox Code Playgroud)
在你的rake任务文件中:
binding.pry
Run Code Online (Sandbox Code Playgroud)
这种方法对我不起作用.我刚刚在我的代码中添加了这个:
require 'ruby-debug'
# ... code ...
debugger
Run Code Online (Sandbox Code Playgroud)
Visual Studio Code具有非常好的内置调试器。如果有人发现这个正在寻找一种让它与 rake 一起工作的方法,这里有一个有效的配置:
{
"name": "Debug a rake task",
"type": "Ruby",
"request": "launch",
"useBundler": true,
"cwd": "${workspaceRoot}",
"program": "/usr/local/bin/rake",
"args": ["all"]
}
Run Code Online (Sandbox Code Playgroud)
这将运行 rake 任务all。您可能必须更改 rake 的路径,我没有找到在 PATH 中运行该路径的方法。