2015-06-03 11 views
12

Wenn ich einen Haltepunkt mit Byebug in Rails einstelle, möchte ich manchmal, dass es beendet, aber die Anleitung auf Github sagt, 10 zu verwenden, die Pry auch beendet. Das wiederholte Schreiben von continue kann ärgerlich sein, wenn der Haltepunkt in einer Schleife ist.Ausführung von Byebug beenden, ohne Pry zu beenden

Gibt es trotzdem einen Stopp von byebug, ohne die Rails-Konsole zu verlassen?

+0

Sie können den Befehl "abort" versuchen, es wird die aktuelle Ausführung abgebrochen – saadlulu

Antwort

-1

Remove „Debugger aus dem Code und geben Sie "Finish" in der Konsole

+1

Versucht, "byebug" aus dem Code zu entfernen, aber es brach danach immer wieder ab, als ob es da wäre. Gleiches Verhalten bei "Fortfahren" und "Beenden" Befehlen. –

+0

Dies wird nicht funktionieren. Der Code wird erst wieder geladen, wenn Sie die Konsole verlassen. –

2

!!! Versuchen. Es funktioniert auf pry gem, aber nicht sicher, ob es auf byebug tut.

2

Gut, das ist nicht die elegante Lösung, aber es funktioniert für mich bisher

Wenn Sie einen Basis-Controller in Ihrer Rails-Anwendung haben Sie einen Accessor hinzufügen können eine Variable zu halten, zu sagen, ob Sie mit dem Debuggen oder nicht passieren sollen.

attr_accessor :debugging 

Dann fügen Sie/ändern initializer die Variable auf true auf jede Anfrage zu setzen (oder jedes Mal gibt es eine Instanz für das Objekt erstellt wurde):

def initialize 
    @debugging=true 
    super 
end 

Und schließlich, immer den byebug Anruf mit einem bedingten wo immer Sie wollen dieses Verhalten:

byebug if debugging 

Dann, wenn Sie an der IRB-Konsole sind und Sie den Debugger verlassen, aber weiterhin die Ausführung von Code nur setzen Sie die Variable:

@debugging=false; finish 

Sie könnten dies sogar in einem Helfer einkapseln oder etwas OOP-Magie machen, aber das ist ein guter Ausgangspunkt. Wenn Sie die Anforderung wiederholen, erhalten Sie das Standardverhalten erneut, sofern Sie die Variable nicht erneut auf false setzen.

14

Wenn byebug unter der Rails-Konsole oder in Rails-Server ausgeführt wird in der Regel nur durch Schlagen Ctrl + D byebug I Quit.

Der Haken bei diesem Ansatz ist, wenn Sie dies in Rails Server dann Byebug nicht stoppen und debuggen das nächste Mal, wenn es eine byebug Anweisung in Ihrem Code irgendwo trifft. Aber es funktioniert perfekt in der Rails-Konsole.

+1

Funktioniert perfekt !! : D –

+0

Das hat bei mir funktioniert. Das '!!!' Vorschlag unten führen zu einem Syntaxfehler. – asahi

Verwandte Themen