我有一个 rails 应用程序,我在其中使用 foreman 来启动我的 rails 和 sidekiq 服务器。由于工头与常规的 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 的远程调试不兼容?
档案:
sidekiq: bundle exec sidekiq
rails: rails server
配置/初始化程序/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
请注意,当我不使用远程调试时,sidekiq 的 byebug 功能正常(尽管在工头中我在键入时看不到提示)。
另请注意,我之前尝试过使用Byebug.wait_connection = true
,Byebug.start_server
但我遇到了同样的问题。