我正在使用heroku的rack-timeout
gem,以及here所述的动态错误页面。
但是,当超时引发异常时,它会被路由为500错误而不是503错误。
我可以在应用程序控制器中使用rescue_from
捕获异常并手动路由到错误#503,但这会阻止Rollbar之类的插件记录异常。
有没有办法让呈现正确的错误页面,并确保像Rollbar这样的插件仍然有异常风?
答案 0 :(得分:0)
我最终使用了rambulance
gem,它提供了一个简单的配置选项来解决这个问题:
# config/initializers/rambulance.rb
Rambulance.setup do |config|
config.rescue_responses = {
"Rack::Timeout::RequestTimeoutException" => :service_unavailable
}
end
作者还写了一些很好的理由,说明为什么不使用我之前使用的方法:
答案 1 :(得分:0)
我知道这是一个老问题,但是无需为此添加gem依赖项。
机架超时引发异常; 未处理该异常的500个结果。要处理该异常并获得503或其他所需的信息,请添加:
config.action_dispatch.rescue_responses["Rack::Timeout::RequestTimeoutException"] = :service_unavailable
到您的application.rb文件。