Вы можете иметь конфигурационные переменные, которые постоянно хранятся в локальной настройке каждого приложения heroku, чтобы они вообще не были в вашем коде!поэтому один и тот же код может работать на нескольких сайтах героку, но с разной конфигурацией.Это очень просто, легко, элегантно ...
Это подход, который мы использовали.(Мы использовали его для ОДНОГО ЖЕ вещи ... у нас есть несколько клонов того же приложения в Heroku, но нам нужен только ОДИН исходный код на github, в нашем локальном каталоге dev мы делаем PUSH to ORIGIN (github), затем, когда у нас естьтак, как нам нравится, мы записываем CD в локальный каталог prod, который идет в тот же самый github-репозиторий, и мы ТОЛЬКО PULL из GITHUB в этот каталог, никогда не проталкиваем (например, все нажатия на github происходят изнаш каталог dev, каталог prod - это просто промежуточная область для другого приложения heroku.)
В с разными конфигами на разных сайтах HEROKU (как описано ниже), EXACT ЖЕ КОД работает на ОБЕ сайтах heroku.
Итак, наш рабочий процесс: (ключ в том, что ОБА каталоги указывают на ТО ЖЕ ГИТУБ РЕПО)
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, где вы запускаете в режиме DEV, поместите те же самые команды config в ваш файл config/environment/development.rb
, что ваша версия 'dev' конфигурации vars будет установлена на то, что они должны быть:
ENV['FIRST_CONFIGVAR'] = "foodev"
ENV['SECOND_CONFIGVAR'] = "bardev"
Легко, элегантно.Спасибо, Героку!