ruby-on-rails-4 - how - debug in controller rails
Cómo usar Byebug con un proceso remoto(por ej., Pow) (2)
¿Cómo me conecto a una instancia de depuración remota de Byebug (para usar con Pow, etc.)?
Tuve que juntar información de varias fuentes para lograr lo anterior, así que pensé en incluir una guía consolidada aquí para su conveniencia:
- https://github.com/deivid-rodriguez/byebug/pull/29 ,
- https://github.com/deivid-rodriguez/byebug/pull/36 ,
- https://github.com/deivid-rodriguez/byebug/issues/31
- http://mines.mouldwarp.com/2012/04/pow-guard-and-rdebug-staying-in-web-app.html
Estos son los pasos:
En config / environments / development.rb, agregue:
require ''byebug'' #set in your .powconfig if ENV[''RUBY_DEBUG_PORT''] Byebug.start_server ''localhost'', ENV[''RUBY_DEBUG_PORT''].to_i else Byebug.start_server ''localhost'' end
Reinicia Pow y visita yourapp.dev
Ejecute lo siguiente:
[bundle exec] byebug -R localhost:<port_you_defined_in_pow_config>
Debería ver una conexión exitosa a la instancia remota.
La respuesta de Joseph fue buena pero confusa en algunos aspectos pequeños. Coloca el inicio del servidor byebug en config/environments/development.rb
, cuando sería mejor en un inicializador. Además, la exportación de la variable de entorno entra en .powenv
o .powrc
. Así es como lo hice funcionar.
En tu gemfile:
gem ''byebug''
En la línea de comando:
bundle install
Si está utilizando Pow, agregue lo siguiente a .powenv
:
export BYEBUGPORT=3001
Si está utilizando otros marcos (por ejemplo, solo foreman
), puede que tenga que modificar .env
en .env
lugar.
En config/initializers/byebug.rb
if Rails.env.development? and ENV[''BYEBUGPORT'']
require ''byebug/core''
Byebug.start_server ''localhost'', ENV[''BYEBUGPORT''].to_i
end
Y finalmente en la línea de comando:
touch tmp/restart.txt
Una vez que vayas a tu sitio de pow, el servidor de byebug debería iniciarse. En la línea de comando, ahora puedes hacer:
[bundle exec] byebug -R localhost:3001