2013-04-30 46 views
1

当退出使用raisefail,如何防止从正在显示的回溯一个Rails应用程序?如何抑制Rails的回溯?

使用back_trace_limit尝试,但它似乎只为控制台工作...?

+0

可能重复的[强制红宝石隐藏回溯异常](http://stackoverflow.com/questions/5357383/force-ruby-to-hide-backtrace-on-exception) – Nakilon 2016-07-15 15:44:48

+0

这是同样的问题,但答案是不同的。此外,所引用问题的答案是5岁。在这么长的时间里应该有新的更好的方法。我发现,是5岁最答案不再相关,至少在某些领域,如导轨。 – 2016-07-15 17:17:13

+0

哦的确如此。答案是不同的。那么关闭另一个链接到这个呢? – Nakilon 2016-07-16 12:21:06

回答

1

你有超过使用其set_backtrace方法有异常情况返回的回溯总量控制。例如:

def strip_backtrace 
    yield 
rescue => err 
    err.set_backtrace([]) 
    raise err 
end 

begin 
    strip_backtrace do 
    puts 'hello' 
    raise 'ERROR!' 
    end 
rescue => err 
    puts "Error message: #{err.message}" 
    puts "Error backtrace: #{err.backtrace}" 
end 

输出:

hello 
Error message: ERROR! 
Error backtrace: [] 

这里的strip_backtrace方法捕获所有错误,设置回溯为空数组,并重新引发改性异常。