ruby-on-rails ruby debugging rake ruby-debug

Ruby on Rails: depuración de tareas de rake



ruby-on-rails debugging (6)

ByeBug es otro para 2.0+

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

Cuando escribo el debugger no comienza:

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

Si ejecuto rake my:task --debugger , me devuelve a la consola de inmediato. ¿Cómo es posible depurar tareas de rake?


Encontré la solución.

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

o en algunos sistemas

$ rdebug rake my:task


Este enfoque no funcionó para mí. Acabo de agregar esto en mi código:

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


La respuesta de Andrey Kouznetsov no funcionó para mí usando Ruby 1.9.3. La gema ruby-debug no parece ser compatible con Ruby 1.9. Tuve que usar la gema depuradora: https://github.com/cldwalker/debugger .

  1. Agregue gem ''debugger'' al grupo de desarrollo de mi Gemfile.
  2. Ejecutar bundle .
  3. Agregar require ''debugger'' en la parte superior de mi tarea de rake.
  4. Agregue una llamada al debugger donde quería un punto de interrupción en mi tarea de rake.
  5. Ejecute la tarea de rake normalmente desde la línea de comando, por ejemplo: rake my:task .

Recomiendo pry para esto

bundle install pry require ''pry'' rake ...

En tu archivo de tarea de rake :

binding.pry


Visual Studio Code tiene un depurador bastante bueno, incorporado. Si alguien encuentra esto buscando una forma de hacer que funcione con rake, aquí hay una configuración funcional:

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

Esto ejecutaría la tarea de rake all . Puede que tengas que cambiar la ruta del rastrillo, no encontré la manera de ejecutar la ruta en PATH.