Ruby on Rails: отладка задач rake

когда я пишу 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 ответов


ответ Андрея Кузнецова не сработал для меня, используя Ruby 1.9.3. Драгоценный камень ruby-debug, похоже, не поддерживает Ruby 1.9. Мне пришлось использовать отладчик gem:https://github.com/cldwalker/debugger.

  1. добавить gem 'debugger' в группу разработки моего Gemfile.
  2. Run bundle.
  3. добавить require 'debugger' к вершине моей задачи рейка.
  4. добавить вызов debugger где я хотел точку останова в моей задаче рейка.
  5. запустить грабли задача обычно из командной строки, например:rake my:task.

Я нашел решение.

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

или на некоторых системах

$ rdebug rake my:task

рекомендую pry для этого

bundle install pry
require 'pry'
rake ...

в своем задач рейка:

binding.pry 

этот подход не работает для меня. Я просто добавил Это в мой код:

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

ByeBug-еще один для 2.0+

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


Код Visual Studio хороший отладчик, встроенный. Если кто-нибудь найдет этот поиск способа заставить его работать с rake, вот рабочая конфигурация:

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

это будет запускать задачу rake all. Возможно, вам придется изменить путь к рейку, я не нашел способ запустить тот, что в пути.