【问题标题】:VSCode, Docker, Rails debuggingVSCode、Docker、Rails 调试
【发布时间】:2021-09-04 17:11:44
【问题描述】:

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"/>

但是当我用请求点击上面的控制器时,断点不会启动(请求只是通过)。

  • 红宝石:2.7
  • 导轨:6.1
  • cmd (docker-compose.yml): "rdebug-ide --debug --host 0.0.0.0 --port 1234 -- bin/rails server -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 输出通道或容器的日志中没有任何内容。

我认为我做错了什么?还是少了什么?

【问题讨论】:

    标签: ruby-on-rails ruby docker debugging visual-studio-code


    【解决方案1】:

    您的 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,这应该可以正常工作(反斜杠兼容性)

    【讨论】:

    • 谢谢!修复了 remoteWorkspaceRoot 和断点,我有一个工作控制台,可以检查变量。整洁。
    • @Pascal 请接受答案,以便其他人知道您的问题已解决
    猜你喜欢
    • 1970-01-01
    • 2019-07-19
    • 2019-03-05
    • 2020-06-08
    • 2021-01-25
    • 2022-12-19
    • 2022-06-29
    • 2020-03-23
    • 1970-01-01
    相关资源
    最近更新 更多