您可以將配置變量永久存儲在每個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