2017-01-23 4 views
3

Ich benutze Ruby 2.2.2, Pry und 'Pry-byebug'. Die continue Anweisung entfernt alle beobachteten Variablen in in pry-byebug haben:Wie kann ich eine Variable in Ruby Pry beobachten?

[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 

sie verlieren bei jeder continue macht Ausdrücke ziemlich wertlos beobachtet. Wenn ich next verwende und stattdessen zum selben Punkt im Code gehe, sind die überwachten Ausdrücke immer noch da; Es ist nur die continue, die das Problem verursacht. Im Moment kann ich nicht einmal eine Dokumentation über die watch-Anweisung finden, also weiß ich nicht, warum das passiert.

Allgemeiner, ich möchte nur den Wert einer Reihe von Ausdrücken bei jeder Pry-Eingabeaufforderung ausdrucken (oder sie vielleicht ausdrucken, wenn sie sich seit dem letzten Druck geändert haben.) Wie kann ich erreichen das in einem Ruby Debugger?

+0

Die Integration von Byebug in Pry ist ein ziemlicher Hack. Sie spielen oft nicht gut zusammen. Habe vorher noch keine Wache benutzt, also kann mir leider nichts helfen. Vielleicht emailen Sie einfach den Autor von byebug? – akuhn

Antwort

0

Sie sollten in der Lage sein, ein Plugin zu schreiben, das nur die Ausdrücke nach der Auswertung zeigt, ob das genau ist, was Sie wollen. Pry plugins

Welche Sie etwas Einfaches wie

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

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

Oder etwas entlang der Linien von das tun könnte, würde „Hallo“ nach jeder neuen Auswertung berichten. (Dies ist jedoch derzeit nicht getestet auf Handy)

Verwandte Themen