【发布时间】:2023-03-04 05:59:01
【问题描述】:
我们使用config.exceptions_app 将异常路由到客户错误控制器(描述为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
【问题讨论】:
-
"env 已被弃用,取而代之的是 Rails5 的 request.env。"你能从另一篇文章中尝试他的建议吗? stackoverflow.com/users/1143732/richard-peck
标签: ruby-on-rails exception ruby-on-rails-5