binding.pry
命令启动服务器,
bin/dev
不起作用(控制台输入不可用)。它只适用于 bin/rails s
命令。
我知道它与工头和 Procfile.dev 有关,但我不知道如何。
这是一个错误还是应该是这样的?
一种流行的方法是使用
pry-remote
,它在某些方面很有用,我没想到:https://github.com/Mon-Ouie/pry-remote.
pry-remote
打开一个远程终端,所以你放下调试器行(binding.remote_pry
在 pry-remote
的情况下),你将打开另一个终端并通过在你的 shell 中调用 pry-remote
进入调试会话。
我知道这有点复杂,我已经习惯了,并且能够通过 Foreman 摆脱其他进程记录的噪音。
使用 bin/dev,Procfile.dev 文件是用 foreman 运行的。撬动问题是由 CSS 和 JS 观察者引起的,它们只是监听你的 CSS 和 JS 文件中的变化。
你可以做的是从你的 Procfile 中删除
web: unset PORT && bin/rails server
命令。所以它只会有 CSS 和 JS 观察者,看起来像这样:
js: yarn build --watch
css: yarn build:css --watch
现在你必须打开两个终端,一个用
bin/rails s
,另一个用foreman start -f Procfile.dev
。这样你的窥探就可以在服务器端正常工作,观察者也可以正常观看。
希望这对某人有帮助。
我使用 rdbg + vscode 远程调试,它工作正常。
像这样更新 Procfile.dev 以使用 rails 服务器运行 rdbg 并设置套接字文件
web: rdbg --command --nonstop --open=vscode --sock_path=tmp/sockets/rdbg.socket -- bundle exec bin/rails server
安装 VSCode Ruby rdbg Debugger,像这样配置 launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to rdbg Process",
"type": "rdbg",
"request": "attach",
"debugPort": "${workspaceRoot}/tmp/sockets/rdbg.socket",
},
]
}
现在,VSCode 将在您运行 bin/dev 时启用调试器启动,或者您可以随时通过 F5 在 vscode 中运行调试器