ruby-on-rails “config/initializers/new_framework_defaults_5_2.rb”是如何工作的?

x33g5p2x  于 4个月前  发布在  Ruby
关注(0)|答案(3)|浏览(46)

具体来说...
我不明白为什么在一个 * 新的 * Rails 5.2应用程序中,如果你进入控制台并选中Rails.application.config.action_controller.default_protect_from_forgery,它会返回true
.但是一个 * 升级 * 的Rails 5.2应用程序,如果你进入控制台并选中Rails.application.config.action_controller.default_protect_from_forgery,它将返回nil(除非你在config/initializers/new_framework_defaults_5_2.rb中手动设置)
这个GitHub评论提到了这种行为,但我不明白这是如何工作的,我还没有找到任何文档。

更新:This issue似乎是决定不包括new_framework_defaults*文件在新生成的应用程序的点.然后this pull request提到,new_framework_defaults_*文件只保持在滚动的基础.我仍然在寻找为什么/如何.

2fjabf4q

2fjabf4q1#

要在Rails 5.2中加载默认值(即config/initializers/new_framework_defaults_5_2.rb),请在application.rb中进行以下更改

config.load_defaults 5.2

字符串
然后从初始化器中删除new_framework_defaults_5_2.rb

qvk1mo1f

qvk1mo1f2#

文件中的样板文件解释了如何使用它:

# This file contains migration options to ease your Rails 5.2 upgrade.
#
# Once upgraded flip defaults one by one to migrate to the new default.
#
# Read the Guide for Upgrading Ruby on Rails for more info on each option.

字符串
你不应该像其他回复建议的那样,(1)以编程方式将config.load_defaults设置为当前的Rails版本,或者(2)更改config.load_defaults的值 *,然后 * 删除new_framework_defaults_*.rb文件。
相反,采用框架维护者建议的增量方法:翻转new_framework_defaults文件中的值,测试应用程序,只有在确定默认值的更改没有破坏任何内容时才更新config.load_defaults值。
如果你感到不耐烦,一个稍微快一点的方法是:全部启用并测试你的应用程序,如果有任何错误,可以在new_framework_defaults文件中的配置设置中进行二分搜索,找到导致应用程序错误的配置默认更改子集。
一旦确定应用程序在新的默认设置下运行顺畅,就可以删除new_framework_defaults文件。

5vf7fwbs

5vf7fwbs3#

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

字符串
将永远解决问题)

相关问题