2017-01-23 5 views
3

J'utilise Ruby 2.2.2, Pry et 'pry-byebug'. La déclaration continue supprime toutes les variables ont regardé en pry-byebug dans:Comment puis-je regarder une variable dans Ruby Pry?

[1] pry(main)> watch foo 
Watching foo 
watch: foo => 42 
[2] pry(main)> watch 
Listing all watched expressions: 

1: foo => 42 

[3] pry(main)> continue 
[1] pry(main)> watch 
No watched expressions 

les perdre sur tous les continue rend les expressions assez regardé sans valeur. Si j'utilise next et que je place au même point dans le code, les expressions observées sont toujours là; c'est juste le continue qui cause le problème. Pour le moment je ne peux même pas trouver de documentation sur l'instruction watch, donc je ne sais pas pourquoi cela se produit. Plus généralement, je veux juste imprimer la valeur d'un ensemble d'expressions à chaque invite Pry (ou, peut-être, les imprimer si elles ont changé depuis la dernière fois qu'ils ont été imprimés.) Comment puis-je atteindre ceci dans un débogueur Ruby?

+0

L'intégration de byebug dans pry est assez un hack. Ils ne jouent pas souvent bien ensemble. N'a pas utilisé de montre avant donc hélas ne peut pas aider avec celui-ci. Peut-être juste envoyer un courriel à l'auteur de byebug? – akuhn

Répondre

0

Vous devriez être en mesure d'écrire un plugin qui montre juste les expressions après avoir évalué si c'est exactement ce que vous voulez. Pry plugins

que vous pourriez faire quelque chose de simple comme

Pry.hooks.add_hook(:after_eval, "reporter") do |output, binding, pry| 
    $watch ||= [] 
    $watch.each {|block| block.call} 
end 

$watch = [-> { puts "hello"}] 

Ou quelque chose le long des lignes de cela, ferait rapport « bonjour » après chaque nouvelle évaluation. (Ceci n'est cependant pas testé, actuellement sur mobile)