2015-12-04 105 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