¿Cómo depurar una aplicación rails en docker con pry?
Tengo una aplicación rails ejecutándose en un contenedor docker en el entorno de desarrollo.
Cuando intento depurarlo colocando binding.pry
en algún lugar del código y adjuntándolo al contenedor, puedo ver el mensaje pry
en la salida, pero no se detiene y no puedo interactuar con él como si fuera sin el contenedor docker.
Entonces, ¿cómo depuro una aplicación en contenedores?
4 answers
Si está utilizando docker-compose, puede agregar estas banderas a docker-compose.yml
:
app:
tty: true
stdin_open: true
Y luego adjuntar a su proceso con docker attach project_app_1
. pry-rails
funciona aquí ahora. Asegúrese de que less
esté instalado en su contenedor para una experiencia óptima de palanca.
Cf. https://github.com/docker/compose/issues/423#issuecomment-141995398
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-12 16:57:00
Para usar pry tienes que ejecutarlo de manera diferente:
docker-compose run --service-ports web
Echa un vistazo a este artículo para más información:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-11 19:16:07
Tuve este mismo problema cuando estaba ejecutando pry en Pasajero. Intente cambiar "pry-rails"
en el Gemfile a gem "pry-remote"
, lo que iniciará un protocolo dRuby o distribuido sin dependencias.
Donde desea detener el código en la llamada de ejecución "binding.remote_pry"
en lugar de "binding.pry"
Luego simplemente llama a remote-pry
en la consola para acceder a él. Debería funcionar igual. En su entorno de prueba solo el binding.pry
habitual funciona bien.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-04 21:16:13
Si no usa docker-compose
, simplemente puede ejecutar el contenedor con la opción -it
.
Por ejemplo:
docker run -v /Users/adam/Documents/Rails/Blog/:/usr/src/app -p 3000:3000 -it blog
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-08 20:21:26