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?
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
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
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.
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.
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.)
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