gpt4 book ai didi

ruby-on-rails - ActiveRecord::RecordNotFound 引发 404 而不是 500

转载 作者:行者123 更新时间:2023-12-04 03:43:36 26 4
gpt4 key购买 nike

我们有一个在生产中基本上默默失败的操作,因为它引发了 ActiveRecord::RecordNotFound错误,Rails 将其视为 404 错误而不是 500 错误——这意味着它没有被我们的错误记录器捕获。

我不喜欢 Rails 将某些错误映射到 404s - 我认为应该由开发人员决定 URL 是否无效,或者检索记录失败是否是应用程序错误。

我们如何确保所有 Rails 错误都被视为 500 错误?

最佳答案

首先,如果您可以手动将错误通知您的错误记录器,那可能是最好的做法。让 Rails 返回不同的 HTTP 状态代码可能会破坏应用程序的其他部分。

但是,如果您绝对必须这样做,您可以通过从救援响应哈希中删除相应条目来指示 Rails 不要返回 404。您可以在初始化程序中执行此操作:

# config/initializers/rescue_responses_overrides.rb
ActionDispatch::ExceptionWrapper.rescue_responses
.delete('ActiveRecord::RecordNotFound')

现在,每当 ActiveRecord::RecordNotFound 时,Rails 都会向浏览器发送 500 状态码。被提出。您还可以一步删除所有条目:
ActionDispatch::ExceptionWrapper.rescue_responses.clear

要查看 Rails 为哪些其他错误返回不同的状态代码,您只需在 Rails 控制台中打印哈希:
pp ActionDispatch::ExceptionWrapper.rescue_responses

关于ruby-on-rails - ActiveRecord::RecordNotFound 引发 404 而不是 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com