您可以在每个Heroku应用程序的本地设置中持久保存配置变量,因此它们根本不必出现在您的代码中!因此,相同的代码可以在多个Heroku网站上运行,但具有不同的配置。这非常简单、易用和优雅...
这就是我们使用的方法。(我们用它来做同样的事情...我们在Heroku上有多个克隆应用,但我们只想要一个源在GitHub上,在我们的本地开发目录中我们将其PUSH到ORIGIN(GitHub),然后当我们喜欢它时,我们CD到生产本地目录,它将从SAME GitHub存储库中
仅拉取,从未推送过(例如,所有推送到GitHub都来自我们的dev目录,prod目录只是另一个 Heroku 应用的暂存区)。
通过在不同的Heroku网站上
具有不同的配置(如下所述),
相同的代码可以在BOTH Heroku站点上工作。
因此,我们的工作流程是:
(关键是两个目录都指向同一个GitHub repo)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)*
就是这样!
现在,以下是如何将您的特定于网站的配置变量保留在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
然后进入你的另一个目录myPRODdir,执行相同的操作,只需将相同的远程heroku变量设置为fooheroku2和barheroku2。
然后在你的Rails应用中,你可以这样简单地引用它们:
a = ENV['FIRST_CONFIGVAR']
一个应用程序将读取'fooheroku1',另一个应用程序将读取'fooheroku2'
最后,在您运行开发模式的本地目录myDEVdir中,将相同的配置命令放入您的config/environment/development.rb
文件中,您的' dev '版本的配置变量将被设置为它们应该是什么:
ENV['FIRST_CONFIGVAR'] = "foodev"
ENV['SECOND_CONFIGVAR'] = "bardev"
简单、优雅。谢谢你,Heroku!