1

我正在使用 heroku 的rack-timeoutgem,以及这里描述的动态错误页面。

但是,当超时引发异常时,它会被路由为 500 错误而不是 503。

我可以在我的应用程序控制器中捕获异常rescue_from并手动路由到错误#503,但这会阻止像 Rollbar 这样的插件记录异常。

有没有办法获得正确的错误页面,并确保像 Rollbar 这样的插件仍然会收到异常消息?

4

2 回答 2

0

我最终使用了rambulancegem,它提供了一个简单的配置选项来解决这个问题:

# config/initializers/rambulance.rb

Rambulance.setup do |config|
  config.rescue_responses = {
    "Rack::Timeout::RequestTimeoutException" => :service_unavailable
  }
end

作者还写了一些为什么不使用我以前使用的方法的充分理由:

从指南中删除自定义错误页面部分

于 2017-01-14T06:41:05.770 回答
0

我知道这是一个老问题,但没有必要为此添加 gem 依赖项。

rack-timeout 引发异常;未处理该异常的 500 结果。要处理该异常并获得 503 或您可能想要的任何其他内容,请添加:

config.action_dispatch.rescue_responses["Rack::Timeout::RequestTimeoutException"] = :service_unavailable

到您的 application.rb 文件。

于 2020-08-03T17:41:24.687 回答