2015-06-03 16 views
12

Quando imposto un breakpoint con Byebug in Rails, a volte voglio che termini l'esecuzione, ma la guida su github dice di usare exit che esce anche da Pry. Digitando continue ripetutamente può essere fastidioso se il punto di interruzione è in un ciclo.Make Byebug termina l'esecuzione senza uscire da Pry

È comunque possibile arrestare byebug senza uscire dalla console di Rails?

+0

È possibile provare il comando "abort", interromperà l'esecuzione corrente – saadlulu

risposta

-1

Rimuovi "debugger dal codice e digitare 'Fine' in consolle

+1

Provato a rimuovere "byebug" dal codice ma continuava a rompere in seguito comunque come se fosse lì. Stesso comportamento nel provare i comandi "continua" e "finire". –

+0

Questo non funzionerà. Il codice non verrà ricaricato fino all'uscita dalla console. –

2

Prova !!!. Funziona su pry gem, ma non è sicuro se lo fa su byebug.

2

Beh questo non è il più soluzione elegante ma funziona per me finora

Se si dispone di un controller di base nell'applicazione rotaie è possibile aggiungere una funzione di accesso per tenere una variabile dire se si desidera il debug accada o no:.

attr_accessor :debugging 

Quindi aggiungere/modificare inizializzazione per impostare la variabile a true su ogni richiesta (o ogni volta che c'è un'istanza creata per quell'oggetto):

def initialize 
    @debugging=true 
    super 
end 

E, infine, utilizzare sempre la chiamata byebug con un condizionale dove vuoi questo comportamento:

byebug if debugging 

Poi, quando si è alla console IRB e si desidera uscire dal debugger, ma continuerà l'esecuzione del codice appena impostato la variabile:

@debugging=false; finish 

Si potrebbe anche incapsulare questo in un aiuto o fare qualche magia OOP, ma questo è un buon punto di partenza. La cosa bella è che se ripeti la richiesta otterrai di nuovo il comportamento standard a meno che non imposti di nuovo la variabile su false.

14

Quando si esegue byebug sotto la console Rails o in server di Rails' Io di solito smesso byebug solo colpendo Ctrl +D.

Il problema con questo approccio è, se si esegue questa operazione nel server di Rails, Byebug non si interromperà e eseguirà il debug la volta successiva che raggiunge l'istruzione byebug nel codice in qualsiasi punto. Ma funziona perfettamente nella console di Rails.

+1

Funziona perfettamente !! : D –

+0

Questo ha funzionato per me. Il '!!!' i suggerimenti riportati di seguito portano a un errore di sintassi. – asahi