Подтвердить что ты не робот

Ruby on Rails: отладка задач грабли

Когда я пишу 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, он немедленно вернет мне консоль. Как можно отлаживать задачи рейка?

4b9b3361

Ответ 1

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

  • Добавьте gem 'debugger' в мою группу разработки Gemfile.
  • Выполнить bundle.
  • Добавьте require 'debugger' в начало моей задачи rake.
  • Добавьте вызов debugger, где мне нужна точка останова в моей команде rake.
  • Запустите задачу рейка, как правило, из командной строки, например: rake my:task.

Ответ 2

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

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

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

$ rdebug rake my:task

Ответ 3

Я настоятельно рекомендую pry для этого

bundle install pry
require 'pry'
rake ...

В файле rake task:

binding.pry 

Ответ 4

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

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

Ответ 6

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

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

Это приведет к выполнению задачи rake all. Возможно, вам придется изменить путь к грабли, я не нашел способ запустить его в PATH.