gpt4 book ai didi

ruby-on-rails - 从 Rails 4 升级到 Rails 5 后,自定义错误处理不再有效

转载 作者:行者123 更新时间:2023-12-02 19:47:52 25 4
gpt4 key购买 nike

我们使用 config.exceptions_app 将异常路由到客户错误 Controller (描述 here )。这在我们的 Rails 4 应用程序中运行良好,但自从我们升级到 Rails 5 后,此设置不再有效,并且我们在处理函数中收到错误“未定义的局部变量或方法‘env’”。

application.rb

module MyApp
class Application < Rails::Application

# Route errors to our custom error controller
# (See https://coderwall.com/p/w3ghqq)
config.exceptions_app = lambda do |env|
ExceptionsController.action(:render_error).call(env)
end

end
end

exceptions_controller.rb

class ExceptionsController < BaseController

def render_error

@exception = env["action_dispatch.exception"] # RAILS 5 RAISES ERROR HERE: "undefined local variable or method `env'"
exception_wrapper = ActionDispatch::ExceptionWrapper.new(request.env, @exception)
@status_code = exception_wrapper.status_code
trace = exception_wrapper.application_trace

# Custom notifications and stuff...

end

end

最佳答案

感谢@zakariah1 的帮助(如果你想发布答案,我会给你信誉)。

事实证明,我必须对 render_error 函数进行一些更改才能使一切正常工作。我在下面发布了 Rails 4 和 Rails 5 版本以供引用:

def render_error

# --- FOR RAILS 4: ---
## @exception = env["action_dispatch.exception"]
## exception_wrapper = ActionDispatch::ExceptionWrapper.new(env, @exception)

# --- FOR RAILS 5: ---
@exception = request.env["action_dispatch.exception"]
exception_wrapper = ActionDispatch::ExceptionWrapper.new(request.env['action_dispatch.backtrace_cleaner'], @exception)

trace = exception_wrapper.application_trace

# Custom notifications and stuff...

end

关于ruby-on-rails - 从 Rails 4 升级到 Rails 5 后,自定义错误处理不再有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921104/

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