具体来说...
我不明白为什么在一个 * 新的 * 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_*
文件只保持在滚动的基础.我仍然在寻找为什么/如何.
3条答案
按热度按时间2fjabf4q1#
要在Rails 5.2中加载默认值(即
config/initializers/new_framework_defaults_5_2.rb
),请在application.rb
中进行以下更改字符串
然后从初始化器中删除
new_framework_defaults_5_2.rb
qvk1mo1f2#
文件中的样板文件解释了如何使用它:
字符串
你不应该像其他回复建议的那样,(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
文件。5vf7fwbs3#
字符串
将永远解决问题)