Me gustaría poder enviar código dev.myapp.com
para probar y luego www.myapp.com
para uso en producción. ¿Es esto posible con Heroku?
Me gustaría poder enviar código dev.myapp.com
para probar y luego www.myapp.com
para uso en producción. ¿Es esto posible con Heroku?
Respuestas:
Su interfaz con Heroku es esencialmente una rama de Git. La gema Heroku hace un 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 haya configurado múltiples aplicaciones en Heroku, debería poder configurar su repositorio Git de esta manera:
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
Normalmente trabajo en una rama "en funcionamiento" y uso Github como maestro.
Suponiendo que ese sea su caso, su flujo de trabajo de implementación probablemente se vería así:
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
heroku create yourapp --remote your-remote
heroku
comandos deben incluir --app staging
o --app production
. ¿Hay alguna forma de establecer un valor predeterminado? (Preguntar como comentario porque esto parece demasiado específico para ser una pregunta SO completa.)
Esto explica todo lo que necesita saber si es un novato como yo: http://devcenter.heroku.com/articles/multiple-environments
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 se ha abordado en ninguna de las respuestas.
Paso 1: Configure las versiones de producción ('myapp') y de ensayo ('staging-myapp') de su aplicación como se indica en la respuesta de Luke Bayes
Paso 2: En su sistema de administración de dominio (por ejemplo, GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Paso 3: Configure Heroku para enrutar dev.myapp.com a staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
Una vez que el registro CNAME haya tenido tiempo de propagarse, podrá ejecutar su aplicación de ensayo en dev.myapp.com.
before_filter
gancho a mi application_controller
para atrapar TODO en la puesta en escena y forzar al usuario a iniciar sesión como administrador, luego configuré una cookie de administrador para poder ver la aplicación desde el punto de vista de un 'no administrador'. Trabajando bastante bien para mí.
Deberías comprobar el heroku_san
Hace un buen trabajo haciendo malabares con los entornos de heroku.
Las cosas son más fáciles ahora. Así es como se hace ...
$ 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 interruptores --app o --remote para apuntar a una aplicación en particular:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Para las aplicaciones Rails, Heroku utiliza el entorno de "producción" de forma predeterminada . Si desea que su aplicación de prueba se ejecute en un entorno de prueba , cree el entorno en su proyecto y configure las variables de entorno RAILS_ENV y RAKE_ENV correspondientes en la aplicación:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
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
Sin embargo, eso es un gran dolor, así que solo uso mi gema snappconfig y ejecuto
$ rake heroku:config:load[myapp-staging]
para cargar los archivos de configuración YAML de mi proyecto en Heroku.
Ahora simplemente 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
(Consulte Gestión de varios entornos para una aplicación | Centro de desarrollo de Heroku para obtener más información y accesos directos).
RAILS_ENV
y RACK_ENV
to staging
: "Puede ser tentador crear otro entorno personalizado como" staging "y crear un config / environment / staging.rb e implementarlo en una aplicación Heroku con RAILS_ENV = staging. Esta no es una buena práctica . En su lugar, recomendamos ejecutar siempre en modo de producción y modificar cualquier comportamiento estableciendo sus variables de configuración ". Más sobre esto aquí: devcenter.heroku.com/articles/…
git push staging edge work
?