deployment - learn - Instancia de ensayo en Heroku
heroku panel (5)
Debes consultar el heroku_san
Hace un muy buen trabajo haciendo malabarismos con entornos en heroku.
Me gustaría poder enviar el código a dev.myapp.com
para realizar pruebas y luego a www.myapp.com
para su uso en producción. ¿Es esto posible con Heroku?
Esto explica todo lo que necesita saber si es un novato como yo: http://devcenter.heroku.com/articles/multiple-environments
Las cosas son más fáciles ahora. Así es como lo haces ...
Crea una aplicación para cada entorno
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Esto creará repos remotos con nombre para cada aplicación, que puedes ver en .git/config
.
Ahora puede usar los modificadores --app o --remote para dirigirse a una aplicación en particular:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Establecer entornos Rails
Para las aplicaciones de Rails, Heroku adopta de manera predeterminada el entorno de "producción" . Si desea que su aplicación de ensayo se ejecute en un entorno intermedio , cree el entorno en su proyecto y establezca las correspondientes 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, deberá pasarlas también 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 gema snappconfig y corro
$ rake heroku:config:load[myapp-staging]
para cargar los archivos de configuración de YAML de mi proyecto en Heroku.
Desplegar
Ahora solo presionas 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
(Consulte devcenter.heroku.com/articles/multiple-environments de desarrollo devcenter.heroku.com/articles/multiple-environments para obtener más información y accesos directos).
Tu interfaz con Heroku es esencialmente una rama de Git. La gema Heroku hace algo de trabajo a través de su API, pero dentro de su 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 configuras varias aplicaciones en Heroku, deberías poder configurar tu repositorio de Git así:
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 sucursal de "trabajo" y uso Github para mi maestro.
Suponiendo que ese sea el caso para usted, su flujo de trabajo de implementación probablemente se parecería a algo así 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
Una parte clave de la pregunta original es vincular la aplicación de ensayo 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 preparación (''staging-myapp'') de su aplicación como se indica en la respuesta de Luke Bayes
Paso 2: en su sistema de gestión de dominios (por ejemplo, GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Paso 3: configura Heroku para enrutar dev.myapp.com a staging-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.