ENV.fetch vs secrets.yml

时间:2018-04-01 11:50:08

标签: ruby-on-rails environment-variables ruby-on-rails-5

对于提交给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还是应该停止使用机密文件?

0 个答案:

没有答案