2011-07-11 23 views
0

我試圖讓代碼(如Rails等)到達'調試器'時觸發IRB提示符。雖然我可以觸發調試器,但是如何在調試器被觸發時讓IRB自動啓動?使用IRB(即調用'調試器')和Thor?

目前,我中.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'和額外的'退出'?

謝謝!

回答

1

對於那些你們誰可能有同樣的問題,我沒有找到兩種解決方案(見http://bashdb.sourceforge.net/ruby-debug.html#Autoirb):在設置 'autoirb' 到:


OPTION 1。 (我的首選)

這很好,因爲它似乎會自動包含您的本地.irbrc。如果你想退出應用程序的執行(一旦退出irb,然後退出調試器),你仍然需要輸入'exit'兩次。

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

選項2:設置 'autoeval' 上。

這很好,因爲它在調試器中自動評估未知命令,並且只需要輸入'exit'一次退出,因爲技術上仍然在調試器控制檯中(而不是在嵌套的irb會話中),而且您的聲明只是被自動評估。缺點是您的.irbrc設置被忽略。 Rails使用這種方法(更多信息在:http://www.catapult-creative.com/2009/08/12/make-ruby-debug-work-better/)。

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