Mam aplikację szyn, w której korzystam z brygadzisty, aby uruchomić moje szyny i serwery sidekiq. Ponieważ brygadzista nie współdziała dobrze ze zwykłym byebugiem (nie widzisz podpowiedzi podczas pisania), skonfigurowałem zdalne debugowanie dla moich szyn i serwerów sidekiq. Działa to doskonale na serwerze szynach, ale kiedy połączyć się z serwerem byebug dla serwera sidekiq, mam następujące:Jak korzystać z Byebug z Sidekiq i Foreman
$ bundle exec byebug -R localhost:58501
Connecting to byebug server localhost:58501...
Connected.
(byebug:ctrl)
I jestem w stanie wychwycić wszystkie punkty przerwania byebug.
Zgodnie z dokumentacją, znak zachęty (byebug: ctrl) oznacza, że program zakończył się normalnie (https://github.com/deivid-rodriguez/byebug/blob/master/GUIDE.md), ale sidekiq działa poprawnie.
Czy w mojej konfiguracji jest coś niepoprawnego, czy też sidekiq nie jest kompatybilny ze zdalnym debugowaniem byebug?
Procfile:
sidekiq: bundle exec sidekiq
rails: rails server
config/inicjalizatory/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
Zauważ, że gdy nie używam zdalnego debugowania, byebug funkcji drobnych z sidekiq (choć w brygadziście nie widzę podpowiedzi podczas pisania).
Należy również pamiętać, że próbowałem używać Byebug.wait_connection = true
przed Byebug.start_server
, ale mam ten sam problem.
Czy kiedykolwiek to rozgryzłeś? Zaimplementowałem twoje rozwiązanie tylko po to, aby uzyskać zdalne debugowanie byebug działające na serwerze railsowym z heroku local, ale spowolniło mój serwer do crawlowania, a lokalna heroku przestała reagować. Czy w ogóle masz do czynienia z tym problemem? – Lorenz
Proponuję lokalnie używać wbudowanego wykonywania zadań, ponieważ resque lub sidekiq są dużym nakładem pracy nad rozwojem. Ale to nie jest odpowiedź, tylko propozycja – Kkulikovskis
Nie jest to odpowiedź na twoje pytanie, ale rozwiąże ona twój problem: https://github.com/Mon-Ouie/pry-remote – medik