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