揭秘 Rails load_defaults:掌握配置更新

你在 `config/application.rb` 文件中看到过这一行吗?`config.load_defaults 7.2`

或者也许你偶然发现了像这样一个神秘的初始化程序?👇

`配置/初始化器/new_framework_defaults_7_0.rb`

如果您不是特意寻找这些,您甚至可能不会注意到它们的存在。

在这篇文章中,我将解释这些设置是什么,并指导您完成有效管理它们的步骤。

什么是 config.load_defaults?

`config.load_defaults` 是 rails 中的配置设置,有助于管理特定 rails 版本的默认配置值。

它确保您的应用程序使用适合您所运行的 rails 版本的配置设置,同时在升级期间**保持与以前版本的兼容性**。

当您使用“config.load_defaults”指定版本时,rails 会将该版本的默认设置加载到您的应用程序中。这包括对中间件、默认行为和其他可能随时间演变的框架设置等内容的更改。

但是,为什么 config.load_defaults 会退出?

升级 Rails 应用程序通常意味着要处理配置设置的变化,其中一些可能涉及重大更改。这些更改可能会影响代码库的重要部分,而一次性更新所有内容可能会有风险且耗时。

这时 config.load_defaults 就派上用场了。升级 Rails 时,可以使用 config.load_defaults 明确指定 Rails 版本,该版本决定了应用程序的默认配置设置。

例如,如果您使用的是 Rails 7.1,则您的应用配置可能仍在使用 7.0 或更低版本的默认配置。发生这种情况的原因是 Rails 为您提供了逐步采用新默认配置的灵活性。这样,您的应用将继续运行,而不会发生任何意外的行为变化,同时您可以有条不紊地过渡到较新的设置。

这种渐进式方法可让您按照自己的节奏将应用与最新版本的最佳实践和性能改进保持一致。这是在升级过程中最大程度减少中断的好方法,让您有时间测试和解决可能出现的任何问题 😄

什么是 new_framework_defaults_x_y.rb?

在版本升级过程中,当你运行“rails app:update”时,rails 会在你的“config/initializers”目录中创建一个特殊的文件,名称类似于“new_framework_defaults_X_Y.rb”(其中 X 和 Y 匹配你的目标 Rails 版本)。

将此文件视为该 rails 版本中引入的所有新配置默认值的备忘单 📝。这些设置以注释掉的行形式列出,方便您决定何时(以及是否)启用它们。

此文件为何有用?

采用新的默认设置有时会导致行为发生变化,从而影响您的应用。通过逐个取消注释设置,您可以单独测试每个更改,确保您的应用按预期运行。这种循序渐进的方法可以最大限度地降低风险,让您有机会处理兼容性问题,而不会让您的团队或应用不堪重负 😌

取消注释所有行并确信您的应用可以在新默认值下顺利运行后,您可以删除此初始化文件。此时,您还应该更新“config.load_defaults”版本以反映新的 Rails 版本。

如果无法更新到新设置该怎么办?

有时,您可能会发现由于特定的限制而无法更新到新的配置设置的情况。

别担心——你仍然可以更新你的“load_defaults”版本并解决该问题。👍

假设您正在使用 `new_framework_defaults_5_1.rb`(这意味着您的 Rails 版本是 5.1,但您的 `load_defaults` 仍设置为 5.0)。如果您由于限制而无法更新以下设置:

config.assets.unknown_asset_fallback = false

您可以通过将其添加到“config/application.rb”文件或您的某个初始化文件中来明确覆盖此设置,如下所示:

config.assets.unknown_asset_fallback = true

添加此覆盖后,您可以安全地将“load_defaults”版本升级到 5.1。这可确保您的应用受益于其他新的默认设置,同时保持您无法更新的设置的兼容性。

⚠️ 但是,请记住,通过采用这种方法,您将偏离框架的默认行为。 确保清楚地记录此异常并定期重新查看它,以确保它在您的应用程序发展过程中仍然必不可少。 尽可能努力与默认设置保持一致,以使您的应用程序与 rails 的最佳实践保持一致。

总结

保持应用配置与 Rails 默认配置一致是维持稳定性和利用新功能的关键步骤。`config.load_defaults` 和 `new_framework_defaults_x_y.rb` 的组合让您能够灵活地逐步安全地升级。

通过逐步采用新设置,您可以降低兼容性问题的风险,并确保您的应用保持先进和高效。记录任何异常,经常重新查看,并努力与 Rails 最佳实践保持一致。借助这些工具和策略,您可以放心地让您的应用保持最新状态并为未来做好准备。