Ruby on rails RubyonRails:调试rake任务
当我编写Ruby on rails RubyonRails:调试rake任务,ruby-on-rails,ruby,debugging,rake,ruby-debug,Ruby On Rails,Ruby,Debugging,Rake,Ruby Debug,当我编写调试器时,它不会启动: 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
调试器时,它不会启动:
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任务?我找到了解决方案
$ gem install ruby-debug
$ ruby-debug rake my:task
或者在某些系统上
$ rdebug rake my:task
这种方法对我不起作用。我刚刚在代码中添加了以下内容:
require 'ruby-debug'
# ... code ...
debugger
Andrey Kouznetsov的答案在我使用Ruby 1.9.3时并不适用。ruby调试gem似乎不支持ruby 1.9。我必须使用调试器gem:
将gem'debugger'
添加到我的Gemfile的开发组
运行bundle
将require'debugger'
添加到我的rake任务的顶部
添加对debugger
的调用,我希望在我的rake任务中有一个断点
从命令行正常运行rake任务,例如:rake my:task
我强烈推荐这个
bundle install pry
require 'pry'
rake ...
在您的rake任务文件中:
binding.pry
ByeBug是2.0版的另一款+
内置了相当好的调试器。如果有人在搜索如何使其与rake一起工作时发现了这个问题,下面是一个有效的配置:
{
"name": "Debug a rake task",
"type": "Ruby",
"request": "launch",
"useBundler": true,
"cwd": "${workspaceRoot}",
"program": "/usr/local/bin/rake",
"args": ["all"]
}
这将运行rake任务all
。您可能必须将路径更改为rake,我没有找到运行路径中的路径的方法。确实,尽管您不应该在rake任务中执行大量逻辑。我的大多数rake任务都是一行程序,在模型上调用一个方法,然后对模型进行全面测试。我正在基于mechanize进行spider,我需要调试一些行。所有这些都在方法中,尚未被测试覆盖。谢谢您的回复。@rspeicher,如果您在我的系统上有一个种子任务是rdebug
而不是ruby debug
的话,它会很有用。提示:在开始时添加调试器。设置[:autoeval]=true
这将导致典型的rails行为,您键入的所有内容都运行在self
中,您将调试器
调用放在那里。另一个选项不是将require'debugger'
放在顶部,而是将内联require'debugger';调试器
。这样,当您删除调试器
语句时,您不会忘记删除require
所有的都对我不起作用。我使用了rvm
srake
,我在任务的第一行设置了args
,它对我起了作用。@SomeGuyOnAComputer:因此出现了“这将运行rake任务”。这只是我两年前(或两年前)完成的一项任务的名称。很遗憾,我错过了这项任务。如果您想从Rubymine调试,请检查此项。