【发布时间】:2020-05-13 00:22:11
【问题描述】:
我们的 Rails 应用有一个自定义的 404 和 500 页面:
match '/500', :to => 'errors#internal_server_error', :via => :all
我们有一些规范来确保它有效。
在 test.rb 中:
Rails.application.configure do
config.consider_all_requests_local = false
config.action_dispatch.show_exceptions = true
end
但是,在开发过程中,异常被吞没,因此很难弄清楚发生了什么。
因此,对于某些测试,我们需要上述配置,而其他规格则需要不同的配置。但是配置是在测试运行之前设置的,所以无法更新。
如何更新前块中单个规范的配置?
导轨 6
编辑:我尝试过的:
Shira 提到了嘲笑,但这似乎没有任何作用。
Rails.application.config.consider_all_requests_local = false
Rails.application.config.action_dispatch.show_exceptions = true
这确实有效,但仅在第一个请求之前。在第一次请求之后,它什么也不做。
Rails.application.config.consider_all_requests_local = ->{ ENV['...'] }
这不起作用。
似乎问题在于这些配置在中间件中使用,并且一旦配置了应用程序,更改就不会反映。
我试图找到一种方法来重新初始化 Rails 应用程序,但似乎没有办法。
我想唯一的方法是猴子修补中间件以使用带有 ENV 的 Proc...
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-6