Vous pouvez avoir des vars config stockés de manière persistante sur la configuration locale de chaque application heroku afin qu'ils ne soient pas du tout dans votre code! donc le même code peut fonctionner sur plusieurs sites heroku mais avec une configuration différente. C'est très simple, facile, élégant ...
C'est l'approche que nous avons utilisée. (Nous l'avons utilisé pour la MÊME chose ... nous avons plusieurs clones de l'application SAME chez Heroku, mais nous voulons seulement une source à github, dans notre répertoire local dev nous faisons le PUSH to ORIGIN (github), puis quand nous avons comme nous l'aimons, nous CD au répertoire local de prod, qui va au MÊME dépôt github, et nous seulement PULL de GITHUB dans ce répertoire, ne poussez jamais (par exemple, tous les pousse à github viennent de notre répertoire de développement, le répertoire prod est juste une zone de transit pour l'autre application Heroku.)
par ayant les différentes configs sur les différents sites Heroku (comme expliqué ci-dessous), les EXACT même code travaux sur les deux sites Heroku.
Donc, notre flux de travail est la suivante: (la clé est que les deux répertoires pointent Repo MÊME 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)*
c'est tout!
Maintenant, voici comment vous gardez votre configuration spécifique au site vars sur le site Heroku:
http://docs.heroku.com/config-vars
sur votre ligne de commande locale, pour chacun de vos deux répertoires locaux, faites:
$ heroku config:add FIRST_CONFIGVAR=fooheroku1
Adding config vars:
FIRST_CONFIGVAR => fooheroku1
$ heroku config:add SECOND_CONFIGVAR=barheroku1
Adding config vars:
SECOND_CONFIGVAR => barheroku1
pour voir ceux que vous avez défini:
$ heroku config
FIRST_CONFIGVAR => fooheroku1
SECOND_CONFIGVAR => barheroku1
puis cd dans votre autre répertoire myPRODdir et faites la même chose, ne définissez que les mêmes variables distantes heroku sur fooheroku2 et barheroku2.
puis dans vos rails vous application simple référence à eux comme si:
a = ENV['FIRST_CONFIGVAR']
Une application va lire « fooheroku1 » l'autre application va lire « fooheroku2 »
Et enfin, sur votre répertoire local myDEVdir, où vous exécutez en mode dEV, mettre les mêmes commandes de configuration dans votre fichier config/environment/development.rb
votre version « dev » des vars de configuration sera réglé sur ce qu'ils devraient être:
ENV['FIRST_CONFIGVAR'] = "foodev"
ENV['SECOND_CONFIGVAR'] = "bardev"
Facile, élégant. Merci, Heroku!
Est-ce que faire des branches git n'est pas une option? – freedrull