如何抑制Rails中的回溯?

时间:2013-04-30 16:39:03

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

使用raisefail退出Rails应用时,如何防止显示回溯?

尝试使用back_trace_limit,但它似乎只适用于控制台......?

1 个答案:

答案 0 :(得分: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方法捕获所有错误,将回溯设置为空数组,然后重新引发修改后的异常。