升级Rails:我如何处理new_framework_defaults文件?

tel*_*zul 11 ruby-on-rails

我正在从rails 5.1升级到5.2.我做了bundle update rails(加上一些依赖)和rails app:update.现在我有了文件initializers/new_framework_defaults_5_2.rb,所有行都被注释掉了.

我不确定我现在需要做什么.我的应用程序正常工作,所以我猜,所有行都被注释掉了,我已经处于所有新的默认值.然后我不需要那个文件,对吗?

假设我遇到错误,文件中设置的值是新的默认值?所以我会取消注释,也许翻转布尔值并尝试找出导致错误的原因?

谢谢您的帮助

Ste*_*eve 25

(刚刚完成4.2到5.2 Rails升级,我会写一个更完整的答案.)

Rails 5.0

使用Rails 5开始,Rails的团队决定将产生一个初始化, config/initializers/new_framework_defaults.rb即包含新的默认配置值.虽然新应用程序和更新的应用程序之间的内容不同,但是为new(rails new)Rails 5.0应用程序和更新(rake app:update)到Rails 5.0的应用程序生成了此文件.

对于新项目,它包含Rails 5.0的默认值.

对于更新的项目,它包含先前版本的默认值.目的是您的应用程序将使用之前的默认值运行,并且您可以在升级期间一次切换/更新一个.

Rails 5.1和5.2

在这种机制的一些缺点变得明显之后(主要与词汇顺序中初始化器的执行有关),Rails 5.1 对它进行了一些修改.

一种新的方法,#load_defaults已添加到Rails.application.config.新框架默认初始化程序是版本化的,例如,new_framework_defaults_5_1.rb它仅在更新期间生成,而不是在新应用程序中生成.

new_framework_defaults.rbRails 5.0 不同,new_framework_defaults_5_x.rb文件中的设置(几乎)都被注释掉了.它们是新的默认值.您可以浏览每个设备,取消注释设置,并测试您的应用程序.如果您的应用程序正确运行在新的默认值,你可以丢弃new_framework_defaults_5_x.rb文件,并在撞击值config/application.rb到当前版本,即改变config.load_defaults 5.1config.load_defaults 5.2如果你更新到Rails 5.2.

可能存在您不希望新默认设置的设置.如果我想永久保留这样的设置,我可能会将其移动到所有环境调用config/application.rb之下的某个位置load_defaults,或者在适当config/environments/*.rb环境特定配置的文件中.

摘要

在我看来,config/initializers/new_framework_defaults*.rb成功完成升级后文件不应该存在.他们只是帮助突出变化并帮助从一个版本升级到下一个版本.