我有一个Rails应用程序,使用foreman启动我的rails和sidekiq服务器。由于foreman不能与常规的byebug良好交互(无法在键入时看到提示),因此我为我的rails和sidekiq服务器设置了远程调试。这对于rails服务器完美运行,但是当我连接到sidekiq服务器的byebug服务器时,我会收到以下消息:
$ bundle exec byebug -R localhost:58501
Connecting to byebug server localhost:58501...
Connected.
(byebug:ctrl)
我无法捕获任何byebug断点。
根据文档,(byebug:ctrl)提示意味着程序已正常终止 (https://github.com/deivid-rodriguez/byebug/blob/master/GUIDE.md),但是sidekiq可以正常运行作业。
我的配置有问题吗,还是sidekiq不支持byebug的远程调试?
Procfile:
sidekiq: bundle exec sidekiq
rails: rails server
config/initializers/byebug.rb:
if Rails.env.development?
require 'byebug'
def find_available_port
server = TCPServer.new(nil, 0)
server.addr[1]
ensure
server.close if server
end
port = find_available_port
puts "Starting remote debugger..."
Byebug.start_server 'localhost', port
puts "Remote debugger on port #{port}"
end
请注意,如果我不使用远程调试,那么byebug与sidekiq一起使用是可以正常运行的(尽管在foreman中,我无法看到我输入时的提示符)。另请注意,我已经尝试在
Byebug.start_server
之前使用Byebug.wait_connection = true
,但我仍然遇到了同样的问题。