gpt4 book ai didi

ruby-on-rails - 如何根据规范更改 Rails 应用程序配置?

转载 作者:行者123 更新时间:2023-12-04 13:36:17 27 4
gpt4 key购买 nike

我们的 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

然而,在开发过程中,异常被吞并使得很难弄清楚发生了什么。

因此,对于某些测试,我们需要上述配置,而其他规范则需要不同的配置。但是配置是在测试运行之前设置的,因此无法更新。

如何在 before 块中更新单个规范的配置?

rails 6

编辑:我试过的:

Shira 提到了 mock ,但这似乎没有任何作用。
Rails.application.config.consider_all_requests_local     = false
Rails.application.config.action_dispatch.show_exceptions = true

这确实有效,但仅在第一个请求之前。在第一个请求之后,它什么也不做。
Rails.application.config.consider_all_requests_local     = ->{ ENV['...'] }

这不起作用。

问题似乎是这些配置在中间件中使用,一旦配置了应用程序,更改就不会反射(reflect)出来。

我试图找到一种方法来重新初始化 Rails 应用程序,但似乎没有办法做到这一点。

我想唯一的方法是给中间件打补丁以使用带有 ENV 的 Proc ......

最佳答案

我不确定是否可以实际更改配置,但您可以模拟此配置:

allow(Rails.application.config).to receive(:consider_all_requests_local).and_return(true)

关于ruby-on-rails - 如何根据规范更改 Rails 应用程序配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61764257/

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