如何将ruby-debug-ide与unicorn_rails搭配实现Rails调试
VSCode 调试 Unicorn 运行的 Rails 应用配置方法
不需要修改Rails逻辑从内部启动Unicorn,rdebug-ide 末尾 -- 后的参数本来就支持自定义任意待调试的Ruby进程启动命令,直接替换成你日常使用的Unicorn启动指令即可,完整调试启动命令如下:
rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 1234 -- bundle exec unicorn_rails -E "develop_against_staging" -p 3010 -c "${PWD}/config/unicorn.rb"
配置时有几个必须注意的点,未处理的话会出现断点失效、端口占用的问题:
- 先修改Unicorn配置文件
config/unicorn.rb,把worker进程数设为1,同时关闭preload_app预加载配置,避免多进程抢占调试端口:# config/unicorn.rb worker_processes 1 preload_app false - 如果需要在VSCode内点击按钮直接启动调试、不用手动敲命令,直接在项目的
.vscode/launch.json中添加如下配置即可:{ "version": "0.2.0", "configurations": [ { "name": "Rails Unicorn Debug", "type": "Ruby", "request": "launch", "cwd": "${workspaceRoot}", "program": "${workspaceRoot}/bin/bundle", "args": [ "exec", "unicorn_rails", "-E", "develop_against_staging", "-p", "3010", "-c", "${workspaceRoot}/config/unicorn.rb" ], "remotePort": "1234" } ] } - 如果使用附加模式调试,先手动执行上述带
rdebug-ide前缀的Unicorn启动命令,等终端输出调试服务监听1234端口的提示后,在VSCode调试面板选择attach类型的Ruby配置,连接本地1234端口即可正常打断点调试。
内容的提问来源于stack exchange,提问作者Isaiah Shiner
相关产品推荐
相关产品推荐

