我制作了一个Sinatra应用程序,它将在Heroku上托管,而源代码将在GitHub上发布。问题是我有一个带有API密钥的文件,目前在.gitignore中。有没有办法,我可以用密钥文件将我的仓库推送到heroku,并在推送到GitHub时排除文件?
提前致谢!
答案 0 :(得分:15)
可以仅为部署维护一个单独的分支,但要正确维护它需要很多纪律:
git add -f
到bybass您的排除项。)更简单的方法是采用Heroku使用环境变量的自定义将您的秘密值传递给您的实例。请参阅Configuration and Config Vars上的文档:
heroku config:add KEY1=foobar KEY2=frobozz
然后在初始化代码中或您需要的任何位置通过ENV['KEY1']
和ENV['KEY2']
访问这些值。为了支持非Heroku部署,您可以定义相同的环境变量,或者如果环境变量不存在则回退到读取现有的配置文件。
答案 1 :(得分:3)
Figaro gem提供了一种管理此问题的好方法。它基本上在本地模拟Heroku的环境变量方法,并使您的开发环境和Heroku之间的密钥保持同步变得容易。