您可以将配置变量永久存储在每个heroku应用程序的本地设置上,因此它们不必在您的代码中!所以相同的代码可以在多个heroku站点上运行,但具有不同的配置。它非常简单,轻松,优雅...
这是我们使用的方法。 (我们用它来做同样的事情...我们在Heroku有多个SAME应用程序的克隆,但我们只需要一个github源代码,在我们的开发本地目录中,我们对ORIGIN(github)执行PUSH,然后当我们有它是我们喜欢它的方式,我们把CD放到prod本地目录,它转到SAME github存储库,我们只从GITHUB进入PULL到这个目录,永远不要推送(例如,所有的github都会从我们的开发目录中获取,督促目录仅仅是为其他的Heroku应用程序的临时区域。)
通过具有的不同的Heroku网站不同CONFIGS(如下所述),确切相同的代码作品上都Heroku的网站。
因此,我们的工作流程是:(关键是这两个目录指向SAME GitHub库)
cd myDEVdir
*....develop away....*
git add .
git commit -am "another day, another push"
git push origin *(to our SINGLE github repo)*
git push heroku *(test it out on heroku #1)*
cd ../myPRODdir
git pull *(grabs SAME code as used on other site *)
git push heroku *(now the SAME code runs on Heroku #2)*
这就是它!
现在,这里是你如何让你的站点特定的配置瓦尔ON Heroku的网站:
http://docs.heroku.com/config-vars
本地命令行上,为每个两个本地目录,这样做:
$ heroku config:add FIRST_CONFIGVAR=fooheroku1
Adding config vars:
FIRST_CONFIGVAR => fooheroku1
$ heroku config:add SECOND_CONFIGVAR=barheroku1
Adding config vars:
SECOND_CONFIGVAR => barheroku1
看到那些你已经定义:
$ heroku config
FIRST_CONFIGVAR => fooheroku1
SECOND_CONFIGVAR => barheroku1
然后cd到你的其他目录myPRODdir并做同样的事情,只设置相同的远程heroku vars到fooheroku2和barheroku2。
然后在你的Rails应用程序,你简单引用这些像这样:
a = ENV['FIRST_CONFIGVAR']
一个应用程序将显示“fooheroku1”的其他应用程序将显示“fooheroku2”
最后,在你的本地目录myDEVdir,在那里你在DEV模式下运行,把相同的配置命令,在您的config/environment/development.rb
文件的“开发”的配置瓦尔的版本将被设置到任何他们应该是:
ENV['FIRST_CONFIGVAR'] = "foodev"
ENV['SECOND_CONFIGVAR'] = "bardev"
简单,优雅。谢谢,Heroku!
是否让git分支不是一个选项? – freedrull 2011-01-31 23:08:52