Ho un'applicazione per rotaie in cui utilizzo il caposquadra per avviare i miei binari e i server sidekiq. Poiché il caporeparto non interagisce bene con il toebug regolare (non è possibile visualizzare il prompt durante la digitazione), ho impostato il debug remoto per entrambi i miei binari e server sidekiq. Questo funziona perfettamente per il server di rotaie, ma quando mi collego al server byebug per il server sidekiq, ottengo il seguente:Come usare Byebug con Sidekiq e Foreman
$ bundle exec byebug -R localhost:58501
Connecting to byebug server localhost:58501...
Connected.
(byebug:ctrl)
E sono in grado di catturare qualsiasi breakpoint byebug.
Secondo la documentazione, il prompt (byebug: ctrl) significa che il programma è terminato normalmente (https://github.com/deivid-rodriguez/byebug/blob/master/GUIDE.md), ma sidekiq sta eseguendo i lavori bene.
C'è qualcosa di sbagliato nella mia configurazione, oppure sidekiq non è compatibile con il debug remoto di 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
noti che quando non uso debug remoto, byebug funzioni bene con sidekiq (sebbene in foreman non riesco a vedere il prompt mentre scrivo).
Si noti inoltre che ho provato a utilizzare Byebug.wait_connection = true
prima dello Byebug.start_server
, ma ho lo stesso problema.
Lo hai mai capito? Ho implementato la soluzione solo per ottenere il debug remoto di byebug lavorando sul server di rotaie con heroku local, ma ha rallentato il mio server fino a una scansione e heroku local è diventato praticamente insensibile. Hai avuto a che fare con questo problema? – Lorenz
Suggerirei di utilizzare l'esecuzione del lavoro inline localmente, poiché resque o sidekiq sono grandi overhead di sviluppo. Ma questa non è davvero una risposta, solo un suggerimento – Kkulikovskis
Non è una risposta alla tua domanda, ma risolverà il tuo problema: https://github.com/Mon-Ouie/pry-remote – medik