240 votes

Comment sortir d'une boucle avec Ruby Pry ?

J'utilise Pry avec mon application Rails. Je configure binding.pry dans une boucle de mon modèle pour essayer de déboguer un problème. Par exemple :

(1..100).each do |i|
  binding.pry
  puts i
end

Quand je tape quit il passe à l'itération suivante et s'arrête à nouveau. Existe-t-il un moyen de sortir de la boucle pour ne pas avoir à taper quit 100 fois ?

Actuellement, le seul moyen que je connaisse pour m'en sortir est d'utiliser CTRL + C et redémarrez l'application.

482voto

Evandro Points 984

Pour quitter Pry sans condition, tapez

exit-program

Modification du commentaire de @Nick : Fonctionne également :

!!!

0 votes

Merci @Evandro, c'est exactement ce que je cherchais !

0 votes

Bien qu'il soit évident que vous atteindrez directement la fixation, en utilisant seulement exit permettra au programme de continuer à fonctionner.

1 votes

Cela n'a pas fonctionné pour moi lors de l'exécution rspec . Mais CTRL-C, deux fois, l'a fait.

124voto

stebooks Points 667

J'utilise :

disable-pry

Cela maintiendra le programme en cours d'exécution, mais l'empêchera de continuer à arrêter l'exécution. Ceci est particulièrement utile lorsque vous déboguez dans la console.

15 votes

Pour réactiver (à partir de la ligne de commande) : ENV['DISABLE_PRY'] = nil

2 votes

Je n'ai pas pu entrer à nouveau dans Pry après avoir utilisé disable-pry. Même après avoir utilisé ENV['DISABLE_PRY'] = nil.

2 votes

Pour réintroduire le pry, il suffit de paramétrer ENV['DISABLE_PRY'] = nil dans votre contrôleur, pas en ligne de commande OU dans la console des rails.

41voto

Blake Points 586

Pour tout quitter, utilisez :

exit!

Cela devrait ignorer tous les liens de procédure.

6 votes

Cela tue aussi le serveur en même temps. exit-program est encore probablement la meilleure option si vous ne voulez pas redémarrer le serveur.

3 votes

Juste pour clarifier exit-program vous permet de maintenir votre rails server mais semble lancer un SystemExit

19voto

Chet3x16 Points 11

Utilice

disable-pry

Pour renouer, ajoutez ceci à votre contrôleur

ENV['DISABLE_PRY'] = nil

14voto

banister Points 13181

A binding.pry est exactement la même chose qu'un point d'arrêt dans GDB. Un tel point d'arrêt dans GDB serait également atteint 100 fois.

Si vous voulez seulement le binding.pry à atteindre une fois, lors de la première itération de la boucle, puis utiliser une condition sur le paramètre binding.pry comme ça :

(1..100).each do |i|
  binding.pry if i == 1
  puts i
end

Vous quittez alors la session en cours en tapant simplement exit .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X