Ruby on Rails: depuración de tareas de rake
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 .
- Agregue
gem ''debugger''
al grupo de desarrollo de mi Gemfile. - Ejecutar
bundle
. - Agregar
require ''debugger''
en la parte superior de mi tarea de rake. - Agregue una llamada al
debugger
donde quería un punto de interrupción en mi tarea de rake. - 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.