我在开发环境中有一个运行在docker容器中的rails应用程序。
当我尝试通过在代码中的某处放置binding.pry
并附加到容器来调试它时,我可以在输出中看到pry
提示符,但它不会暂停,我也不能像没有docker容器时那样与它交互。
那么我该如何调试一个容器化的应用呢?
发布于 2016-05-16 23:05:26
如果您正在使用docker-compose,您可以将这些标志添加到docker-compose.yml
app:
tty: true
stdin_open: true
然后使用docker attach project_app_1
附加到您的进程。pry-rails
现在在这里工作。确保您的容器上安装了less
,以获得最佳的撬动体验。
请参阅https://github.com/docker/compose/issues/423#issuecomment-141995398
发布于 2016-05-11 19:16:07
要使用pry,您必须以不同的方式运行它:
docker-compose run --service-ports web
查看这篇文章以了解更多信息:
发布于 2016-02-04 21:16:13
当我在Passenger中运行窥探时也遇到了同样的问题。尝试将Gemfile中的"pry-rails"
更改为gem "pry-remote"
,这将启动一个dRuby或无依赖项的分布式协议。
当您想要停止执行中的代码时,调用"binding.remote_pry"
而不是"binding.pry"
然后在控制台中调用remote-pry
即可访问。它应该是一样的。在您的测试环境中,通常的binding.pry
就可以正常工作。
https://stackoverflow.com/questions/35211638
复制相似问题