在 Rails 控制台中禁用堆栈跟踪显示
Disable stack trace display in Rails console
有什么方法可以减少 rails 控制台中错误报告的冗长程度?具体来说,关闭堆栈跟踪显示?大多数时候它是没有用的,当我患有愚蠢的手指时,它会非常烦人。
当我输入如下内容时:
MyModel.vtrsyr
我不需要堆栈跟踪来告诉我没有 'vtrsyr' 方法
重要的是 rails 控制台使用 irb,并且可以访问 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
可以调用控制台会话以根据需要禁用或启用回溯
有什么方法可以减少 rails 控制台中错误报告的冗长程度?具体来说,关闭堆栈跟踪显示?大多数时候它是没有用的,当我患有愚蠢的手指时,它会非常烦人。
当我输入如下内容时:
MyModel.vtrsyr
我不需要堆栈跟踪来告诉我没有 'vtrsyr' 方法
重要的是 rails 控制台使用 irb,并且可以访问 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
可以调用控制台会话以根据需要禁用或启用回溯