0

我试图让 Thor 在代码中到达“调试器”时触发 IRB 提示(如 Rails 等)。虽然我可以触发调试器,但如何在触发调试器时让 IRB 自动启动?

目前,我在 .thor 文件中执行以下操作:

require 'ruby-debug'

desc 'irb', 'Load IRB console for this app.'
def irb
  puts 'Starting IRB...'
  debugger
end

这会导致调试器被触发,但 IRB 必须通过在提示符下键入“irb”来显式启动:

$ thor app
Starting IRB...
(rdb:1) irb
ruby-1.9.2-p180 :001 > puts 'hello'
hello
=> nil
ruby-1.9.2-p180 :002 > exit 
(rdb:1) exit
Really quit? (y/n) y

如何让 IRB 立即触发,这样我就不需要输入“irb”和额外的“exit”?

谢谢!

4

1 回答 1

1

对于那些可能有同样问题的人,我确实找到了两个解决方案(参见http://bashdb.sourceforge.net/ruby-debug.html#Autoirb):


选项 1:将“autoirb”设置为打开。(我的偏好)

这很好,因为它似乎会自动包含您的本地 .irbrc。缺点是如果你想退出应用程序的执行,你仍然需要输入两次'exit'(一次退出 irb,第二次退出调试器)。

require 'ruby-debug'
::Debugger.settings[:autoirb] = 1

选项 2:将“自动评估”设置为开启。

这很好,因为它会自动评估调试器中的未知命令,并且只需要输入“退出”一次即可退出,因为从技术上讲,您仍在调试器控制台中(而不是在嵌套的 irb 会话中),并且您的语句只是自动的-评估。缺点是您的 .irbrc 设置会被忽略。Rails 使用这种方法(更多信息请访问:http: //www.catapult-creative.com/2009/08/12/make-ruby-debug-work-better/)。

require 'ruby-debug'
::Debugger.settings[:autoeval] = 1
于 2011-07-12T19:58:13.197 回答