2011-10-07 74 views
16

我制作了一个Sinatra应用程序,将在Heroku上托管,并且源代码将在GitHub上运行。问题是我有一个带API密钥的文件,目前在.gitignore中。有没有办法,我可以推动我的回购与密钥文件heroku和推送到GitHub时排除文件?将.gitignore文件推送到特定的远程

在此先感谢!

回答

15

有可能维持只是部署一个独立的分支,但它需要多学科正确地维护它:

  1. 添加提交到生产分支,增加了配置文件(git add -f到bybass您排除)。
  2. 若要更新您的生产分公司,请将其他分公司(例如主公司)合并到其中。
    然而,你必须永不合并你的生产分支到其他任何东西,或基于任何“生产承诺”(其祖先包括你的“添加键”提交)开始分支。

一个更简单的方法是采用Heroku的使用环境变量将您的秘密值传达给您的实例的习惯。请参阅该文档上Configuration and Config Vars

heroku config:add KEY1=foobar KEY2=frobozz 

然后通过ENV['KEY1']ENV['KEY2']访问您的初始化代码值或任何你需要他们。为了支持您的非Heroku部署,您可以定义相同的环境变量,或者如果环境变量不存在,则可以退回到读取现有配置文件。

+0

谢谢你,heroku envvars是要走的路:) – skazhy

+0

除了环境变量,你可能需要“https://devcenter.heroku.com/articles/labs-user-env-compile”,如果你的变量在子弹编制期间需要被访问。 –

3

Figaro gem提供了一种管理此问题的好方法。它基本上在本地模拟Heroku的环境变量方法,并使您的开发环境和Heroku之间的密钥保持同步变得容易。