2015-12-04 72 views
4

有什麼方法可以減少rails控制檯中錯誤報告的冗長?具體來說,關閉堆棧跟蹤顯示?大部分時間它都沒有用,而且當我受到愚蠢手指的困擾時,它總是令人討厭。在Rails控制檯中禁用堆棧跟蹤顯示

當我鍵入類似:

MyModel.vtrsyr 

我並不需要一個堆棧跟蹤告訴我,有沒有「vtrsyr」的方法

回答

6

重要的是,軌控制檯使用內部評級法,並且可以訪問irb配置選項的範圍

$ rails c 
Loading development environment (Rails 4.2.0) 
>> conf 
=> conf.ap_name="irb" 
conf.auto_indent_mode=false 
conf.back_trace_limit=16 
. 
. 
. 

而那裏是:conf.back_trace_limit。所以:

conf.back_trace_limit = 0 

將有效地禁用回溯當前會話,並且輸出將是不錯的,簡潔的:

>> MyModel.gnu 
NoMethodError: undefined method `gnu' for MyModel:Class 

>> obj.do_defective_math 
ZeroDivisionError: divided by 0 

爲了讓事情變得更方便一點,一個函數可以在〜/ .irbrc中定義。喜歡的東西:

def toggle_trace 
    if conf.back_trace_limit > 0 
    conf.back_trace_limit = 0 
    else 
    conf.back_trace_limit = IRB.conf[:BACK_TRACE_LIMIT] 
    end 
end 

也可以根據需要調用控制檯會話禁用或啓用回溯追蹤

+0

這是真棒。請注意,要在Rails Server中執行此操作,您可以通過以下方法實現此目的:http://stackoverflow.com/questions/29169059/rails-backtrace-silencers-do-not-work-while-filters-do請參閱我的筆記以回答 - 我必須合併2個解決方案才能最終停止無用的垃圾回收輸出引用我不保留的源代碼。 – JosephK