You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用VSCode在Docker环境下调试Ruby 2.5.0代码?

我刚好折腾过Ruby 2.5 + Docker + VSCode调试的场景,给你一步步拆解怎么实现调试器附加,亲测可行:

1. 配置Docker容器的调试依赖与端口

首先得让你的Docker容器具备调试能力,还要能和VSCode通信:

  • 安装调试所需gem:在你的Gemfile里添加适配Ruby 2.5的版本(版本不对会直接跑不起来):
    group :development do
      gem 'ruby-debug-ide', '~> 0.7.0'
      gem 'debase', '~> 0.2.4.beta10'
    end
    
    然后在Dockerfile里执行bundle install确保安装完成。
  • 暴露调试端口:在Dockerfile里加一行EXPOSE 1234,这个是调试器默认的通信端口。
  • 映射端口与挂载代码:启动容器时,一定要把本地代码目录挂载到容器内的对应路径,同时映射调试端口:
    • 如果用docker run命令:
      docker run -p 1234:1234 -v $(pwd):/app your-ruby-image
      
    • 如果用Docker Compose,在服务配置里加:
      ports:
        - "1234:1234"
      volumes:
        - .:/app
      
      这里的/app是容器内的代码根目录,要和你本地VSCode的工作目录对应上。
2. 配置VSCode的调试启动项

打开VSCode,切换到「调试」面板,点击「创建launch.json文件」,选择Ruby环境,然后把配置改成远程附加模式:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Docker Ruby",
      "type": "ruby",
      "request": "attach",
      "remoteHost": "localhost",
      "remotePort": 1234,
      "localRoot": "${workspaceFolder}",
      "remoteRoot": "/app", // 这里要和容器内的代码根目录一致
      "showDebuggerOutput": true // 开启方便排查连接问题
    }
  ]
}
3. 在容器内启动调试服务器

进入运行中的容器,或者在启动命令里直接替换成调试启动命令,核心是用rdebug-ide来启动你的应用,让它监听调试连接:

  • 如果是Rails应用:
    rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s
    
  • 如果是普通Ruby脚本:
    rdebug-ide --host 0.0.0.0 --port 1234 -- your_script.rb
    
    注意这里要加--host 0.0.0.0,否则调试服务器只监听容器内部的localhost,VSCode连不上。
4. 附加调试器并验证
  • 在VSCode里给你要调试的代码行打上断点(点击行号左侧)
  • 点击调试面板的绿色启动按钮,等待VSCode显示「已附加」
  • 触发代码执行(比如访问Rails接口、运行脚本),断点应该会命中,此时你就可以像本地调试一样查看变量、单步执行了
一些踩坑提醒
  • Ruby 2.5对debase版本要求很严格,一定要用~> 0.2.4.beta10,用稳定版会出现兼容性错误
  • 如果断点没命中,先检查localRoot和remoteRoot是否完全对应,路径大小写也要注意(Linux容器对大小写敏感)
  • 调试服务器启动后,不要直接用rails s或者ruby script.rb启动应用,必须通过rdebug-ide代理启动

内容的提问来源于stack exchange,提问作者justapilgrim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:00:34