Rails 4.2如何通过foreman启动并配置专属debug端口
Rails 4.2 结合Foreman启动时配置专属调试端口方案
Rails 4.2 已不再支持旧版debugger gem,官方默认使用byebug作为调试工具,可通过以下步骤实现需求:
- 第一步:安装适配的byebug版本
在项目Gemfile的development分组中添加依赖:
group :development do gem 'byebug', '~> 9.1.0' # 适配Rails 4.2和对应Ruby版本的稳定版 end
执行bundle install完成安装。
- 第二步:编写远程调试初始化脚本
新建/修改config/initializers/start_debugger.rb文件,内容如下:
# 适配Rails 4.2 + byebug的Foreman远程调试配置 if Rails.env.development? require 'byebug/core' # 自动寻找可用端口,也可以直接指定固定端口 def find_available_port server = TCPServer.new(nil, 0) server.addr[1] ensure server.close if server end # 如需固定端口,直接赋值即可,例如 port = 8989 port = find_available_port puts "远程调试端口已启用:#{port}" Byebug.wait_connection = true Byebug.start_server('0.0.0.0', port) end
- 第三步:启动服务并连接调试
正常使用foreman start启动服务,服务启动后会在控制台输出当前使用的调试端口。新开终端窗口执行命令byebug -R localhost:对应端口号,即可连接到调试会话,后续在代码中添加byebug断点即可正常触发调试。
提示:如果需要多实例启动不会端口冲突,保留自动分配端口的逻辑即可;如果偏好固定调试端口,替换自动获取端口的逻辑为固定值即可。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

