84 votes

Instance de mise en scène sur Heroku

Je voudrais être capable de repousser le code pour pour tester et ensuite pour pour la production de l’utiliser. Est-ce possible avec Heroku ?

142voto

Luke Bayes Points 2319

Votre interface de Heroku est essentiellement une branche Git. Le Heroku gem certains fonctionne grâce à leur API, mais à l'intérieur de votre dépôt Git, c'est juste une nouvelle branche à distance.

heroku create yourapp # production
git br -D heroku # delete the default branch

heroku create staging-yourapp # staging
git br -D heroku # delete the default branch

Une fois que vous avez configuré plusieurs applications sur Heroku, vous devriez être en mesure de configurer votre dépôt Git comme ceci:

git remote add staging git@heroku.com:staging-yourapp.git
git push origin staging

git remote add production git@heroku.com:yourapp.git
git push origin production

J'ai l'habitude de travailler dans un "travail" de la branche, et d'utiliser Github pour mon maître.

En supposant que c'est le cas pour vous, votre déployer des flux de travail serait probablement ressembler à quelque chose comme:

git co -b working
# do some work

# push to github:
git co master
git merge working
git push

# push to staging:
git co staging
git merge master
git push origin staging

# push to production
git co production
git merge master
git push origin production

19voto

LearningRoR Points 3562

Ce qui explique tout ce que vous devez savoir si vous êtes un débutant comme moi : http://devcenter.heroku.com/articles/multiple-environments

10voto

Don Points 1414

Un élément clé de la question d'origine est sur la liaison jusqu'à la mise en scène application à un sous-domaine (dev.myapp.com) de l'application principale (www.myapp.com). Cela n'a pas été abordé dans les réponses.

Étape 1: Configurer à la fois la production ('myapp') et la mise en scène (la "mise en scène-myapp') versions de votre application comme cela est indiqué dans la réponse par Luc de Bayes

Étape 2: Dans votre domaine de gestion du système (par exemple, GoDaddy):

Create a CNAME record:  dev.myapp.com 
that points to:   proxy.heroku.com

Étape 3: Configurer Heroku pour la route dev.myapp.com à la mise en scène-myapp:

heroku domains:add dev.myapp.com --app staging-myapp

Après l'enregistrement CNAME a eu le temps de se propager, vous serez en mesure d'exécuter votre application, mise en scène dev.myapp.com.

8voto

jlfenaux Points 1413

Vous devriez vérifier la heroku_san

Il fait un bon travail, jonglant avec les environnements sur heroku.

6voto

Yarin Points 18186

Les choses sont plus faciles maintenant. Voici comment vous le faites...

Créer une application pour chaque environnement

$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging

Cela va créer distant nommé repos pour chaque application, que vous pouvez voir en .git/config.

Vous pouvez maintenant utiliser l' --app ou --à distance des interrupteurs pour cible une application en particulier:

$ heroku info --app myapp-staging
$ heroku info --remote staging

Jeu de Rails environnements

Pour les Rails apps, Heroku par défaut à la "production" de l'environnement. Si vous voulez que votre mise en scène application de s'exécuter dans un environnement de test, créer l'environnement de votre projet et de mettre en RAILS_ENV et RAKE_ENV variables d'environnement sur l'application:

$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging

Configurer les environnements

Si vous avez d'autres variables de configuration vous aurez besoin de passer dans chaque environnement.

$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc

C'est une énorme douleur bien donc je peu utiliser mon snappconfig gem et exécuter

$ rake heroku:config:load[myapp-staging]

pour charger mon projet YAML fichiers de configuration dans Heroku.

Déployer

Maintenant, vous venez de pousser à Heroku comme ceci:

$ git push staging master
$ git push production master

et de migrer comme ceci:

$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production

(Voir la Gestion de Plusieurs Environnements pour une App | Heroku Dev Center pour plus d'info et des raccourcis.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X