如何在Ruby Pry中查看变量?
问题描述:
我使用Ruby 2.2.2,Pry和'pry-byebug'。该continue
语句删除任何观看变量在pry-byebug
:如何在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
每continue
失去他们使得看着表情很值钱。如果我使用next
并代替代码中的相同点,则观看的表达式仍然存在;这只是导致问题的continue
。目前我甚至找不到watch
声明中的任何文档,所以我不知道为什么会发生这种情况。更一般地说,我只是想在每个Pry提示符上打印一组表达式的值(或者,如果它们自上次打印以来发生了变化,可能会将其打印出来)。我该如何实现这在一个Ruby调试器?
答
你应该可以编写一个插件,只需在评估后显示表达式即可,正好你想要什么。 Pry plugins
,你可以做一些简单的像
Pry.hooks.add_hook(:after_eval, "reporter") do |output, binding, pry|
$watch ||= []
$watch.each {|block| block.call}
end
$watch = [-> { puts "hello"}]
或沿着那线的东西,每一个新的评估之后将报告“你好”。 (但是,这是未经测试,但目前在手机上)
byebug整合到pry是相当黑客。他们并不经常一起玩。之前没有用过手表,所以唉这个不得了。也许只需发邮件给byebug的作者? – akuhn