有没有办法使用击键来调用撬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中测试过。 因人而异。