【问题标题】:Using IRB (i.e. calling 'debugger') with Thor?与 Thor 一起使用 IRB(即调用“调试器”)?
【发布时间】:2011-07-11 20:25:22
【问题描述】:

我试图让 Thor 在代码(如 Rails 等)中到达“调试器”时触发 IRB 提示。虽然可以触发调试器,但如何让 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”?

谢谢!

【问题讨论】:

    标签: ruby debugging irb ruby-debug thor


    【解决方案1】:

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


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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多