Ruby on Rails: отладка граблей - PullRequest
41 голосов
/ 19 апреля 2010

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

Ответы [ 6 ]

40 голосов
/ 19 апреля 2010

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

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

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

$ rdebug rake my:task
26 голосов
/ 09 марта 2013

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

  1. Добавьте gem 'debugger' в группу разработки моего Gemfile.
  2. Выполнить bundle.
  3. Добавьте require 'debugger' в начало моего рейк-задания.
  4. Добавьте вызов на debugger, где я хотел установить точку останова в моей задаче рейка.
  5. Обычно запускайте задачу rake из командной строки, например: rake my:task.
9 голосов
/ 24 июня 2014

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

bundle install pry
require 'pry'
rake ...

В вашем рейке file:

binding.pry 
6 голосов
/ 30 июня 2011

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

require 'ruby-debug'
# ... code ...
debugger
1 голос
/ 22 октября 2016

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

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

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

1 голос
/ 10 апреля 2015

ByeBug - еще один вариант для 2.0 +

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

...