如何在 Rails >= 7.2 中继续使用 Rails.application.secrets
内容提要
在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`是推荐的做法。