有没有办法使用击键来调用撬ruby?
我只是在考虑能够运行一个程序,然后按一下按键来调用pry和debug是多么棒。 也许有一个gem在运行时动态地注入binding.pry
,我不知道。 如果没有,你将如何在下一行即将执行的ruby脚本之前插入binding.pry
?
假设有POSIX OS,您可以尝试在ruby程序中添加信号处理程序。 ruby文档甚至给出了一个用例示例:
..你的过程可能会捕获USR1信号并用它来切换调试( http://www.ruby-doc.org/core-2.1.3/Signal.html )
Signal.trap('USR1') do binding.pry end
然后,发送信号:
kill -s SIGUSR1 [pid]
编辑:一个更完整的例子:application.rb
我上面的天真建议将失败,因为ThreadError: current thread not owner
。 这是使用全局$debug
标志的更好示例。
#!/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中测试过。 因人而异。