VSCode、Docker、Rails调试
VSCode, Docker, Rails debugging
VSCode 的新手我尝试调试在 Docker 中运行的现有 Rails 应用程序(通过 docker compose 启动)
我按照 https://github.com/rubyide/vscode-ruby 上的说明进行操作(安装了 gems + 扩展,启动配置)。
我可以启动 puma 并看到添加的断点
some-app_1 | 1: <breakpointAdded no="3" location="...../some-app/app/controllers/hello_worlds_controller.rb:4"/>
但是当我用请求点击上面的控制器时,断点没有启动(请求只是通过)。
- Ruby: 2.7
- Rails: 6.1
- cmd (docker-compose.yml): "rdebug-ide --debug --host 0.0.0.0 --port 1234 -- bin/rails 服务器 - p 5000 -b 0.0.0.0"
启动配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "some-App",
"type": "Ruby",
"request": "attach",
"remoteHost": "127.0.0.1",
"remotePort": "1234",
"remoteWorkspaceRoot": "${workspaceRoot}",
"cwd": "${workspaceRoot}",
}
]
}
Ruby 输出通道或容器日志中没有任何内容。
我假设我做错了什么?或者少了什么?
看起来你的remoteWorkspaceRoot它指向你的本地机器,调试器需要知道他应该观察什么文件来破坏内部docker 容器
例如,如果在您的 docker 容器中,您的项目位于“/app”上,您应该更改 remoteWorkspaceRoot 变量为“/app”
在控制台中您应该会看到
some-app_1 | 1: <breakpointAdded no="3" location="your-docker-path-to-the-project/some-app/app/controllers/hello_worlds_controller.rb:4"/>
而不是
some-app_1 | 1: <breakpointAdded no="3" location="...../some-app/app/controllers/hello_worlds_controller.rb:4"/>
如果您不使用 Windows(反斜线兼容性)
,那应该可以正常工作
VSCode 的新手我尝试调试在 Docker 中运行的现有 Rails 应用程序(通过 docker compose 启动)
我按照 https://github.com/rubyide/vscode-ruby 上的说明进行操作(安装了 gems + 扩展,启动配置)。
我可以启动 puma 并看到添加的断点
some-app_1 | 1: <breakpointAdded no="3" location="...../some-app/app/controllers/hello_worlds_controller.rb:4"/>
但是当我用请求点击上面的控制器时,断点没有启动(请求只是通过)。
- Ruby: 2.7
- Rails: 6.1
- cmd (docker-compose.yml): "rdebug-ide --debug --host 0.0.0.0 --port 1234 -- bin/rails 服务器 - p 5000 -b 0.0.0.0"
启动配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "some-App",
"type": "Ruby",
"request": "attach",
"remoteHost": "127.0.0.1",
"remotePort": "1234",
"remoteWorkspaceRoot": "${workspaceRoot}",
"cwd": "${workspaceRoot}",
}
]
}
Ruby 输出通道或容器日志中没有任何内容。
我假设我做错了什么?或者少了什么?
看起来你的remoteWorkspaceRoot它指向你的本地机器,调试器需要知道他应该观察什么文件来破坏内部docker 容器
例如,如果在您的 docker 容器中,您的项目位于“/app”上,您应该更改 remoteWorkspaceRoot 变量为“/app”
在控制台中您应该会看到
some-app_1 | 1: <breakpointAdded no="3" location="your-docker-path-to-the-project/some-app/app/controllers/hello_worlds_controller.rb:4"/>
而不是
some-app_1 | 1: <breakpointAdded no="3" location="...../some-app/app/controllers/hello_worlds_controller.rb:4"/>
如果您不使用 Windows(反斜线兼容性)
,那应该可以正常工作