"config/initializers/new_framework_defaults_5_2.rb" 是如何运作的?

How does "config/initializers/new_framework_defaults_5_2.rb" work?

具体...

我不明白如何在 new Rails 5.2 应用程序中,如果您进入控制台并检查 Rails.application.config.action_controller.default_protect_from_forgery 它会 return true

...但是 upgraded Rails 5.2 应用程序,如果您进入控制台并检查 Rails.application.config.action_controller.default_protect_from_forgery 它会 return nil(除非您在 config/initializers/new_framework_defaults_5_2.rb 中手动设置)

This GitHub comment 提到了这种行为,但我不明白它是如何工作的,而且我还没有找到任何文档。

WIP 更新: This issue seems like the point where it was decided to not include new_framework_defaults* files in newly generated apps. Then this pull request 提到 new_framework_defaults_* 文件仅以滚动方式保存。我仍在调查 why/how...

要在 Rails 5.2 中加载默认值(即 config/initializers/new_framework_defaults_5_2.rb),请在 application.rb

中进行以下更改
config.load_defaults 5.2

然后从初始值设定项中删除 new_framework_defaults_5_2.rb

config.load_defaults Rails::VERSION::STRING.to_f

将永远解决问题)