gem pryを掘る(watch)
Rubyのデバッグに便利なことで有名なgem pry
に調べてみる
watch
監視したい値を watch <値>
のようにして登録すると
値に更新があったときに教えてくれる
[5] pry(main)> a = 1 => 1 [6] pry(main)> watch a Watching a watch: a => 1 [7] pry(main)> a => 1 [8] pry(main)> a += 1 watch: a => 2 => 2
何かを実行するたびに監視対象を実行して、結果を調べてくれているらしい 試しにメソッドの結果を監視したら、毎回監視対象のメソッドが実行されてた
[2] pry(main)> def count [2] pry(main)* puts 'count invoked' [2] pry(main)* 1 [2] pry(main)* end => :count [3] pry(main)> watch count Watching count count invoked watch: count => 1 [4] pry(main)> 1 + 1 count invoked => 2 [5] pry(main)> count count invoked count invoked => 1
裏で更新されているようなものについて監視できるんだろうか? 気になるので、Threadを起動して並列で更新してみたが更新を教えてくれなかった。 どうもpry上でなにか実行したときに値を確認して変わってたら教えてくれるだけらしい。