gpt4 book ai didi

ruby-on-rails - 在 Rails Router 中获取异常内容

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:17 24 4
gpt4 key购买 nike

因此,我使用错误 Controller 处理异常,以便在生产环境中向我的用户显示动态内容。我在我的路线文件中有它要做:

  # Errors
%w( 404 422 500 ).each do |code|
get code, :to => "errors#show", :code => code
end

现在唯一的问题是我正在路由错误,例如当我想通知 Airbrake 时我在 Controller 中丢失了信息。如何维护异常信息并将其发送到 500 上的 Airbrake?现在我得到的只是异常发生时发生的环境,这对调试目的帮助不大。

class ErrorsController < ApplicationController

def show
notify_airbrake(env)
render status_code.to_s, :status => status_code
end

protected

def status_code
params[:code] || 500
end

end

最佳答案

您是否通过重定向到类似 http://your.site/500 的 URL 来处理错误?这将只是一个 HTTP 请求,就像任何其他请求一样,丢失了您所追求的异常上下文。相反,您可能想要使用 ActionControllerRescue功能。它看起来像这样:

class ApplicationController < ActionController::Base
rescue_from StandardError, with: :render_error

private

def render_error(error)
notify_airbrake(error)
render text: 500, status: 500
end
end

您可以添加多个 rescue_from 声明来处理不同类型的错误,例如 Rails 指南示例中的 ActiveRecord::RecordNotFound

关于ruby-on-rails - 在 Rails Router 中获取异常内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042196/

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