对于提交给GitHub或在人与人之间共享的项目,我对环境变量的最佳实践提出了疑问。
当我开始使用rails时,我将所有密钥存储在secrets.yml
文件中。然后我认为当它致力于GitHub时这不是一个好方法。所以我做的是将我的ENV变量迁移到.env文件(在GEM的帮助下加载它们),然后用ENV.fetch('MY_KEY')
访问。
当应用程序在heroku上时,我不需要GEM,因为heroku有自己的ENV变量系统。所以它适合我,但我仍然想知道:
至于习惯,我仍然把敏感的秘密告诉我。例如,如果我使用条带,我会将private key
和可发布的密钥存储在我的.env
中。使用ENV.fetch('STRIPE_PUBLISHABLE_KEY')
直接从我的代码加载可发布的密钥,但对于私钥,我仍然将它从ENV加载到秘密,然后使用秘密:
default: &default
stripe_secret_key: <%= ENV.fetch("STRIPE_SECRET_KEY") %>
development:
<<: *default
test:
<<: *default
production:
<<: *default
staging:
<<: *default
我应该加载其中的所有ENV还是应该停止使用机密文件?