我创建了一个Sinatra应用,将托管在Heroku上,并且源代码将上传到GitHub。问题是我有一个带有API密钥的文件,目前它在.gitignore中。有没有办法在将存储库推送到Heroku时将密钥文件一并推送,但在推送到GitHub时排除该文件?
提前致谢!
提前致谢!
可以单独维护一个部署分支,但是需要严格纪律才能正确地维护它:
git add -f
通过规避排除来实现)。更简单的方法是采用Heroku的方式,使用环境变量将秘密值传递给您的实例。请参阅关于配置和配置变量的文档:
heroku config:add KEY1=foobar KEY2=frobozz
通过 ENV['KEY1']
和 ENV['KEY2']
访问值,可以在初始化代码或任何需要它们的地方使用。为了支持非Heroku部署,你可以定义同样的环境变量,或者如果环境变量不存在,则回退到读取现有配置文件。
Figaro gem是一种很好的方法来解决这个问题。它基本上可以在本地模拟Heroku的环境变量方式,并且使得您可以轻松地在开发环境和Heroku之间保持密钥同步。