Rails 环境变量 vs Rails 5.2 凭据

Rails environment variables vs Rails 5.2 credentials

我只是想知道

之间的具体区别是什么

环境变量ENV[SOME_VARIABLE]

对比

Rails 5.2 凭证 Rails.application.credentials.some_variable

我应该什么时候使用一个与另一个?凭据是否替换了 env 变量?

凭据存储在加密文件中并签入您的存储库。有一个主密钥文件充当开发中的密钥,您将主密钥文件的值设置为生产中的环境变量,两个环境都可以访问凭据。另一方面,环境变量应该用于不是秘密的值。环境变量通常不会签入您的存储库。

什么时候应该使用环境:

  • 当您在项目中没有修复任何变量时
  • 当您不需要特定于环境的密钥时

什么时候应该使用凭据:

  • 当您需要经常更新密钥并且希望在本地更新它以进行测试并希望安全地维护它时(因为每个环境都有自己的凭证文件和自己的密钥来访问它
  • 当您希望特定于环境的键值隔离环境相关的服务访问时。例如,您希望在登台和生产中维护不同的 fcm 服务通道,以防止在内部测试时信息泄漏