我只是在想,如果能够运行一个程序,然后敲击键盘来调用窥探和调试,那该有多好。也许那里有一种宝石可以注入binding.pry
我不知道的运行时动态。如果没有,您将如何进行插入的按键binding.pry
在即将执行的下一行 ruby 脚本之前?
假设使用 POSIX 操作系统,您可以尝试在 ruby 程序中添加信号处理程序。 ruby 文档甚至给出了您的用例的示例:
..您的进程可能会捕获 USR1 信号并使用它来切换调试(http://www.ruby-doc.org/core-2.1.3/Signal.html http://www.ruby-doc.org/core-2.1.3/Signal.html)
Signal.trap('USR1') do
binding.pry
end
然后,发送信号:
kill -s SIGUSR1 [pid]
编辑:更完整的示例:application.rb
My naïve上面的建议将会失败,并显示ThreadError: current thread not owner
。这是一个使用全局的更好的例子$debug
flag.
#!/usr/bin/env ruby
require 'pry'
$debug = false
Signal.trap('USR1') do
puts 'trapped USR1'
$debug = true
end
class Application
def run
while true
print '.'
sleep 5
binding.pry if $debug
end
end
end
Application.new.run
当 application.rb 在一个 shell 的前台运行并且您从单独的 shell 发送 SIGUSR1 信号时,这似乎效果最好。
在 Mac OS 10.9.5 中测试。 YMMV。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)