Pregunta

Quiero usar el depurador IDE de Rubymine para depurar un proceso ruby que se ejecuta en el shell de comandos, a medida que se genera, p. ej.por "consola de rieles".

He aprovechado mucho el depurador cuando ejecuto el servidor web (desde Rubymine) o las suites de prueba (también se ejecutan desde Rubymine).

Sin embargo, si Rubymine no inicia el proceso, no sé cómo adjuntar el depurador.

Estoy usando la versión Rubymine 3.2.4 en Ubuntu con Sun Java 1.6.0_26, Ruby REE 1.8.7 y las últimas gemas de depuración:

ruby-debug-base (0.10.4)
ruby-debug-ide (0.4.17.beta8)

¿Pensamientos?

¿Fue útil?

Solución

Utilice el tipo de configuración Ruby Remote Debug en RubyMine.Consulte la documentación de RubyMine oficial para obtener más detalles.

Básicamente, ejecuta el script como:

rdebug-ide --port <port number> -- script.rb

y luego conéctese al puerto especificado desde el depurador RubyMine.

Otros consejos

Así es como se hace en Rails:

Primero, asegúrese de tener instalado rdebug-ide:

gem install ruby-debug-ide --platform=ruby

A continuación, ejecute esto en la consola:

rdebug-ide --port 6778 -- /projects/your_rails_project/script/rails console

o para rieles 4.0+

rdebug-ide --port 6778 -- /projects/your_rails_project/bin/rails console

O, como @ChristopherWill mencionó a continuación , puede pasar un parámetro --host si desea depurar un servidor no local. (Lea su comentario a continuación para conocer las advertencias)

Esto esperará a que los clientes de depuración remota se conecten.

  1. Haga clic en Ejecutar> Editar configuraciones en RubyMine y luego agregue una instancia de "Ruby Remote Debug"

  2. Utilice el mismo puerto que el 6778 anterior (si cambia el anterior, asegúrese de que los puertos coincidan)

  3. La carpeta raíz y la carpeta raíz local son la misma, / projects / your_rails_project

  4. Haga clic en Aplicar y cerrar.

A continuación, elija esta configuración de la lista junto a los botones de ejecución y depuración y luego haga clic en el botón de depuración. Dale unos segundos y la consola ejecutará "rails console" donde sea que hayas ejecutado "rdebug-ide"

Realmente quiero publicar algo aquí para lo que es muy difícil encontrar una respuesta completa y me tomó mucho tiempo averiguarlo. Hay personas que preguntan cómo adjuntar la depuración remota a resque worker y esta es la forma correcta que finalmente funciona para mí. Este artículo ocupa un lugar destacado en las búsquedas de Google y será fácil de encontrar.

FROM SHELL en el servidor (para mí es mi computadora portátil) ejecute esto desde la raíz de su sitio: rdebug-ide --port 1236 --dispatcher-port 26166 --host 0.0.0.0 bin / rake resque: work QUEUE= *

en RubyMine IDE configure la depuración remota con: Host remoto: 127.0.0.1 Puerto remoto: 1236 Carpeta raíz remota: ruta del servidor a la raíz del sitio Puerto local: 26166 Ruta raíz local: ruta en su estación de trabajo a su archivo raíz donde establecería puntos de interrupción (en mi caso, es todo local, por lo que es 1 ruta y 1 copia de los archivos)

Ejecute su servidor web normalmente con: rails s

configure un punto de interrupción en su trabajador de Resque e intente ejecutar lo que necesite en su sitio para llegar a ese punto de interrupción.

1 nota: tener la gema "primavera" me dio errores y tuve que comentarlo / empaquetarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top