2015-07-28 15 views
11

Ich möchte Byebug verwenden, um meine Anwendung zu debuggen, aber die App ist nie zu stoppen, obwohl ich bereits byebug in meinem Code. Hier ist mein Gemfile.Rails Byebug hat nicht gestoppt Anwendung

group :development, :test do 
    # Call 'byebug' anywhere in the code to stop execution and get a debugger console 

    gem 'byebug', '~> 5.0.0' 

    # Access an IRB console on exception pages or by using <%= console %> in views 
    gem 'web-console', '~> 2.0' 

end 

Ich setze byebug in einen meiner Controller.

def edit 
    byebug 
    present Ingredient::Update 
end 

Ich habe bereits alle meine Anfrage lokal in meinem development.rb gemacht. Ich habe den Server schon einige Male neu gestartet.

config.consider_all_requests_local  = true 

Hier ist das Beispiel, Stack-Trace, dass byebug nur die erste Spur drucken und dann die App auf die Ausführung der nächsten Zeile läuft weiter.

web_1 | [43, 52] in /recipe/app/controllers/ingredients_controller.rb 
web_1 | 43: def update 
web_1 | 44:  run Ingredient::Update do |op| 
web_1 | 45:  return redirect_to op.model 
web_1 | 46:  end 
web_1 | 47:  byebug 
web_1 | => 48:  render action: :edit 
web_1 | 49: end 
web_1 | 50: 
web_1 | 51: # DELETE /ingredients/1 
web_1 | 52: # DELETE /ingredients/1.json 
web_1 | (byebug) Rendered ingredients/edit.haml within layouts/application (264.1ms) 
web_1 | Rendered layouts/_navigation.haml (45.0ms) 
web_1 | Completed 200 OK in 2827ms (Views: 2764.0ms | ActiveRecord: 3.9ms) 
web_1 | 
web_1 | 
web_1 | Started GET "/assets/application.self-1ca8529ef221ef9dba25e835f258c4e62f2f49bce400273a67e63d7d73be28ba.css?body=1" for 192.168.59.3 at 2015-07-28 06:46:00 +0000 

Irgendeine Idee? Update Ich benutze Docker-Compose und Docker in meiner Rails App.

+0

Starten Sie einfach den Server neu und überprüfen Sie. – Deep

+0

Starten Sie den Anwendungsserver neu. – RAJ

+0

Ja, ich habe den Server bereits ein paar Mal neu gestartet. –

Antwort

38

Wenn docker-compose in Kombination mit byebug verwendet wird, muss dies hinzugefügt werden, damit es ordnungsgemäß funktioniert. Gefunden in this blog post

Fügen Sie diese auf Andockfenster-compose.yml

web: 
    ... 
    stdin_open: true 
    tty: true 

Dann laufen Docker-komponieren in deamonized Modus und befestigen mit Docker an den Web-Container:

docker-compose up -d 
docker attach myappname_web_1 
+0

Beachten Sie, dass es nicht erforderlich ist, Ihre Dienste im getrennten Modus auszuführen. Wenn Sie eine Nachricht an den Container anhängen, sieht es so aus, als ob sie hängen würde. Sobald jedoch die App dieses Containers eine Anfrage erhält, wird die Loggerausgabe angezeigt. –

+0

Verwenden Sie nicht das Andockfenster myappname_web_1. Führen Sie stattdessen "docker container ls" aus, um die Container auszuführen, und suchen Sie dann die ID desjenigen, an dem Sie gerade arbeiten. Dann starte einfach: "docker attach container_id" – george

0

Um Debugger-Modus zu aktivieren :

docker-compose Lauf --service-Ports web

Siehe hierzu blog post