フォアマンを使用してレールと 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 のリモート デバッグと互換性がないだけですか?
プロファイル:
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 で正常に機能することに注意してください (ただし、フォアマンでは入力時にプロンプトが表示されません)。
Byebug.wait_connection = true
また、以前Byebug.start_server
に使用してみましたが、同じ問題があることに注意してください。