Domanda

Mi piacerebbe essere in grado di spingere il codice per dev.myapp.com per il test e poi a www.myapp.com per l'uso in produzione. Questo è possibile con Heroku?

È stato utile?

Soluzione

L'interfaccia di Heroku è essenzialmente un ramo Git. La gemma Heroku fa un certo lavoro attraverso la loro API, ma all'interno della vostra repository Git, è solo una nuova filiale a distanza.

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

Dopo aver configurato più applicazioni su Heroku, si dovrebbe essere in grado di configurare il repository Git in questo modo:

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

Di solito lavoro in un ramo 'lavoro', e utilizzare Github per il mio padrone.

Supponendo che è il caso per voi, il flusso di lavoro implementare probabilmente simile a:

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

Altri suggerimenti

Questo spiega tutto quello che è necessario sapere se il vostro un novizio come me: http://devcenter.heroku.com/articles / multiple-ambienti

Una parte fondamentale della domanda iniziale è di circa collegando l'applicazione messa in scena per un sottodominio (dev.myapp.com) dell'app principale (www.myapp.com). Questo non è stato affrontato in una qualsiasi delle risposte.

Passaggio 1: Configurare sia la produzione ( 'myapp') e messa in scena ( 'messa in scena-myapp') versioni della tua app come è indicato nella risposta da Luca Bayes

Passo 2: Nel vostro sistema di gestione del dominio (ad esempio GoDaddy):

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

Passaggio 3: Configurare Heroku per instradare dev.myapp.com alla messa in scena-myapp:

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

Dopo il record CNAME ha avuto il tempo per propagarsi, si sarà in grado di eseguire lo stadiazione applicazione a dev.myapp.com.

Si dovrebbe controllare il heroku_san

Si fa un buon lavoro giocoleria con gli ambienti su Heroku.

Le cose sono più facili ora. Ecco come si fa ...

Crea un app per ogni ambiente

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

Questo creerà chiamato pronti contro termine a distanza per ogni applicazione, che potete vedere nella .git/config.

È ora possibile utilizzare il - app o - remote interruttori di indirizzare una particolare app:

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

ambienti Set Rails

Per applicazioni Rails, Heroku per la "produzione" ambiente . Se volete che il vostro messa in scena applicazione per l'esecuzione in un ambiente di staging, creare l'ambiente nel progetto e impostare il corrispondente RAILS_ENV e RAKE_ENV le variabili d'ambiente su App:

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

Configura ambienti

Se si dispone di altre variabili di configurazione avrete bisogno di passarli in per ogni ambiente.

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

Questo è un dolore enorme anche se così mi basta usare la mia snappconfig gemma e corro

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

per caricare i file di configurazione YAML di mio progetto in Heroku.

Deploy

Ora è sufficiente premere a Heroku in questo modo:

$ git push staging master
$ git push production master

e migrare in questo modo:

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

(Vedere gestione di ambienti multipli per un App |. Heroku Dev Center per maggiori informazioni e tasti di scelta rapida)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top