我有两个自定义异常,我试图在引擎中添加到Rails.application.config.action_dispatch.rescue_responses
。
config.action_dispatch.rescue_responses.merge!({
'Exceptions::Unauthorized' => :unauthorized,
'Exceptions::Forbidden' => :forbidden
})
以上在应用程序中工作正常,但是当我把它放在引擎中的初始化器中时:
Rails.application.config.action_dispatch.rescue_responses.merge!({
'Exceptions::Unauthorized' => :unauthorized,
'Exceptions::Forbidden' => :forbidden
})
它被忽略了。我假设因为引擎的初始化程序在Rails设置rescue_responses之前运行?我能做些什么不同的想法?
config.action_dispatch.rescue_responses
值仅用于暂时。如果你查看https://github.com/rails/rails/blob/4-2-stable/actionpack/lib/action_dispatch/railtie.rb#L36它在初始化程序块中合并到ActionDispatch::ExceptionWrapper.rescue_responses
,在任何初始化程序脚本之前进行评估:-(
如果你看一下,例如ActiveRecord,他们在Railtie
文件中设置它:https://github.com/rails/rails/blob/4-2-stable/activerecord/lib/active_record/railtie.rb#L25
在应用程序初始化程序中调整ActionDispatch::ExceptionWrapper.rescue_responses
是有意义的。这是配置值结束的地方,这种行为在this Rails issue中得到确认。
但是在图书馆的情况下,它的铁路应该附加到config.action_dispatch.rescue_responses
。