如何在 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.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`是推荐的做法。