Ensayo instancia en Heroku


Me gustaría poder enviar código a dev.myapp.com para pruebas y luego a www.myapp.com para uso en producción. Es esto posible con Heroku?

Author: August Lilleaas, 2009-08-14

5 answers

Tu interfaz con Heroku es esencialmente una rama de Git. La gema Heroku hace algún trabajo a través de su API, pero dentro de tu repositorio Git, es solo una nueva rama remota.

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

Una vez que configures múltiples aplicaciones en Heroku, deberías poder configurar tu repositorio Git de la siguiente manera:

git remote add staging [email protected]:staging-yourapp.git
git push origin staging

git remote add production [email protected]:yourapp.git
git push origin production

Normalmente trabajo en una rama 'working', y uso Github para mi master.

Suponiendo que ese sea el caso para usted, su flujo de trabajo de implementación probablemente se vería algo como:

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
 142
Author: Luke Bayes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-21 20:44:39

Esto explica todo lo que necesitas saber si eres un novato como yo: http://devcenter.heroku.com/articles/multiple-environments

 19
Author: LearningRoR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-05 07:59:38

Una parte clave de la pregunta original es sobre la vinculación de la aplicación staging a un subdominio (dev.myapp.com) de la aplicación principal (www.myapp.com). Esto no ha sido abordado en ninguna de las respuestas.

Paso 1: Configure las versiones de producción ('myapp') y de puesta en escena ('staging-myapp') de su aplicación como se indica en la respuesta de Luke Bayes

Paso 2: En su sistema de administración de dominios (por ejemplo, GoDaddy):

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

Paso 3: Configurar Heroku para enrutar dev.myapp.com to ensayo-myapp:

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

Después de que el registro CNAME haya tenido tiempo de propagarse, podrá ejecutar su aplicación de ensayo en dev.myapp.com.

 10
Author: Don Leatham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-01 07:42:08

Usted debe comprobar el heroku_san

Hace un buen trabajo haciendo malabares con los entornos en heroku.

 8
Author: jlfenaux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-29 13:08:36

Las cosas son más fáciles ahora. Así es como lo haces...

Crear una aplicación para cada entorno

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

Esto creará repositorios remotos con nombre para cada aplicación, que puede ver en .git/config.

Ahora puede usar los conmutadores app app o remote remote para dirigirse a una aplicación en particular:

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

Establecer entornos Rails

Para las aplicaciones Rails, Heroku utiliza por defecto el entorno de "producción" . Si desea que su aplicación de ensayo se ejecute en un ensayo entorno, cree el entorno en su proyecto y establezca las variables de entorno RAILS_ENV y RAKE_ENV en la aplicación:

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

Configurar entornos

Si tiene otras variables de configuración, también tendrá que pasarlas para cada entorno.

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

Eso es un gran dolor, así que solo uso mi snappconfig gema y ejecutar

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

Para cargar los archivos de configuración YAML de mi proyecto en Heroku.

Desplegar

Ahora solo empuja a Heroku de esta manera:

$ git push staging master
$ git push production master

Y migrar así:

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

(Ver Gestión de múltiples entornos para una App | Heroku Dev Center para obtener más información y accesos directos.)

 6
Author: Yarin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-27 14:05:52