我在应用程序中使用 ActiveRecord 加密字段,并使用以下命令生成凭据:
rails credentials:edit --environment development
(test
和 production
相同)。
现在我有4个文件:
config/credentials/development.key
config/credentials/test.key
config/credentials/production.key
config/master.key
主密钥和所有环境密钥有什么区别?
主密钥用于在所有环境中加密和解密凭证。环境密钥用于在各自的环境中加密和解密凭证。
credentials.yml.enc
/master.key
是全局秘密对。它是在 Rails 5 中添加的。
Rails 6 添加了特定于环境的内容,例如
production.yml.enc
/production.key
。出于向后兼容性的原因,全局的仍然可用。如果未检测到当前环境特定环境,则 Rails 将使用全局环境。
我建议完全删除全局变量,并在开发/产品中仅使用特定于环境的变量。