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 [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 "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
git push staging edge work
?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
fuente
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):
Paso 3: Configure Heroku para enrutar dev.myapp.com a staging-myapp:
Una vez que el registro CNAME haya tenido tiempo de propagarse, podrá ejecutar su aplicación de ensayo en dev.myapp.com.
fuente
before_filter
gancho a miapplication_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.
fuente
Las cosas son más fáciles ahora. Así es como se hace ...
Crea una aplicación para cada entorno
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:
Establecer entornos de Rails
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:
Configurar entornos
Si tiene otras variables de configuración, deberá pasarlas también para cada entorno.
Sin embargo, eso es un gran dolor, así que solo uso mi gema snappconfig y ejecuto
para cargar los archivos de configuración YAML de mi proyecto en Heroku.
Desplegar
Ahora simplemente empuja a Heroku de esta manera:
y migrar así:
(Consulte Gestión de varios entornos para una aplicación | Centro de desarrollo de Heroku para obtener más información y accesos directos).
fuente
RAILS_ENV
yRACK_ENV
tostaging
: "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/…