如何在 Rails >= 7.2 中继续使用 Rails.application.secrets

💡 原文英文,约300词,阅读约需1分钟。
📝

内容提要

在Rails 7.1中,`Rails.application.secrets`被弃用,建议使用`Rails.application.credentials`,并将在Rails 7.2中移除。现有项目可以继续使用`config/secrets.yml`,只需在`config/application.rb`中添加`config.secrets = config_for(:secrets)`,并将`Rails.application.secrets`替换为`Rails.configuration.secrets`。此外,`secrets:setup`命令被移除,`secrets:edit`和`secrets:show`命令被弃用。

🎯

关键要点

  • 在Rails 7.1中,`Rails.application.secrets`被弃用,建议使用`Rails.application.credentials`。

  • `Rails.application.secrets`将在Rails 7.2中移除。

  • 现有项目可以继续使用`config/secrets.yml`,只需在`config/application.rb`中添加`config.secrets = config_for(:secrets)`。

  • 需要将`Rails.application.secrets`替换为`Rails.configuration.secrets`。

  • Rails 7.1移除了`secrets:setup`命令,并弃用了`secrets:edit`和`secrets:show`命令。

🔎

延伸解读

迁移到新配置方式的必要性

随着Rails 7.2的发布,`Rails.application.secrets`将被完全移除,开发者需要提前做好迁移准备。虽然可以继续使用`config/secrets.yml`,但建议尽早适应`Rails.application.credentials`,以避免未来的兼容性问题。

配置文件的管理

在现有项目中,使用`config/secrets.yml`可以简化配置管理,但需注意,Rails 7.1已移除`secrets:setup`命令,并弃用了`secrets:edit`和`secrets:show`命令。这意味着开发者需要手动管理配置文件,增加了出错的风险。

代码更新的注意事项

在代码中替换`Rails.application.secrets`为`Rails.configuration.secrets`时,需仔细检查所有相关调用,确保没有遗漏。这一过程可能影响到项目的多个部分,建议在测试环境中充分验证更改的效果。

延伸问答

Rails 7.1中`Rails.application.secrets`的变化是什么?

`Rails.application.secrets`在Rails 7.1中被弃用,建议使用`Rails.application.credentials`。

如何在Rails 7.2中继续使用`Rails.application.secrets`?

可以在`config/application.rb`中添加`config.secrets = config_for(:secrets)`,并将`Rails.application.secrets`替换为`Rails.configuration.secrets`。

Rails 7.1中有哪些命令被移除或弃用?

Rails 7.1移除了`secrets:setup`命令,并弃用了`secrets:edit`和`secrets:show`命令。

如何将`config/secrets.yml`的内容迁移到`config/credentials/production.yml.enc`?

可以使用命令`EDITOR=vim rails credentials:edit --environment production`将内容迁移。

在Rails中如何访问配置的秘密?

可以通过`Rails.configuration.secrets.dig(:my_config, :my_var)`来访问配置的秘密。

为什么要从`Rails.application.secrets`切换到`Rails.application.credentials`?

因为`Rails.application.secrets`在Rails 7.2中将被移除,使用`Rails.application.credentials`是推荐的做法。

🏷️

标签

➡️

继续阅读