如何连接到 Byebug 的远程调试实例(用于 Pow 等)?
3 回答
约瑟夫的回答很好,但在一些小方面令人困惑。他将 byebug 服务器的启动放在 中config/environments/development.rb
,而在初始化程序中会更好。此外,环境变量的导出进入.powenv
or .powrc
。这就是我让它工作的方式。
在您的 gemfile 中:
gem 'byebug'
在命令行上:
bundle install
如果您使用 Pow,请将以下内容添加到.powenv
:
export BYEBUGPORT=3001
如果您正在使用其他框架(例如 just foreman
),则可能需要进行修改.env
。
在config/initializers/byebug.rb
if Rails.env.development? and ENV['BYEBUGPORT']
require 'byebug/core'
Byebug.start_server 'localhost', ENV['BYEBUGPORT'].to_i
end
最后在命令行上:
touch tmp/restart.txt
进入 pow 站点后,应该启动 byebug 服务器。您现在可以在命令行上执行以下操作:
[bundle exec] byebug -R localhost:3001
我必须将来自几个不同来源的信息拼凑起来才能完成上述工作,所以为了方便起见,我想我会在此处包含一个综合指南:
- https://github.com/deivid-rodriguez/byebug/pull/29,
- https://github.com/deivid-rodriguez/byebug/pull/36,
- https://github.com/deivid-rodriguez/byebug/issues/31
- http://mines.mouldwarp.com/2012/04/pow-guard-and-rdebug-staying-in-web-app.html
以下是步骤:
在 config/environments/development.rb 中,添加:
require 'byebug' #set in your .powconfig if ENV['RUBY_DEBUG_PORT'] Byebug.start_server 'localhost', ENV['RUBY_DEBUG_PORT'].to_i else Byebug.start_server 'localhost' end
重启 Pow 并访问 yourapp.dev
运行以下命令:
[bundle exec] byebug -R localhost:<port_you_defined_in_pow_config>
您应该会看到与远程实例的成功连接。
在您的代码中
remote_byebug
调用您的代码(例如,通过刷新页面)。这将在端口 8989 上启动本地 byebug 服务器。然后,您的代码将“挂起”等待客户端连接。
通过终端连接到它:
byebug -R localhost:8989
从https://github.com/deivid-rodriguez/byebug/pull/406/files开始,不再需要手动配置服务器