Publica tu aplicación en línea con Heroku
Created by Terence Lee, @hone02
Instalando Heroku
Sigue los pasos 1 hasta el 3 de quickstart guide para crear una cuenta, instalar el Heroku Toolbelt e ingresar.
Coach: Hable acerca de los beneficios de Heroku vs servidores tradicionales para la implementación.
Preparando tu aplicación
Version Control Systems
Necesitamos agregar nuestro código a un controlador de versiones. Para ello vamos a usar GIT.
Coach: Este es un buen momento para hablar de sistemas de control de versiones y git, también explicar el .gitignore
y porqué no queremos estos archivos incluidos.
Actualizando nuestra base de datos
Primero, necesitamos conseguir nuestra base de datos para trabajar en Heroku, el cual usa una base de datos diferente. Por favor cambiar lo siguiente en el Gemfile:
a
Ejecute bundle install --without production
para configurar sus dependencias.
Coach: Puedes hablar acerca de RDBMS y las diferencias con otros sistemas de almacenamiento.
Agregando rails_12factor
Después, necesitamos agregar rails_12factor
a nuestro Gemfile para hacer que nuestra app esté disponible en Heroku.
Esta gema modifica la manera en que Rails funciona, para que se adecue a Heroku. Por ejemplo, el loggeo es actualizado y la configuración de activos estáticos (imágenes, archivos CSS y javascript) es modificada para trabajar apropriadamente dentro de los sistemas de Heroku.
Por favor cambia lo siguiente en el Gemfile:
a
Después, ejecuta bundle
, y a continuación haz un commit de los cambios al Gemfile.lock a tu repositorio:
Coach: Puede hablar de loggearse a Heroku, también como sus otras particularidades.
Publicando tu aplicación
Creación de la aplicación
Necesitamos crear nuestra aplicación heroku digitando heroku create
en la terminal y ver algo como esto:
En este caso “sheltered-refuge-6377” es el nombre de la aplicación.
PUSHeando el código
Lo siguiente que necesitamos para hacer “push” (envío) de nuestro código a heroku es digitar git push heroku master
. Verás la salida del push como lo siguiente:
El proceso se completa con éxito, cuando ves el texto “Launching …” como arriba.
Migrando la base de datos
Necesitamos migrar nuestra base de datos tal como lo hicimos localmente durante el evento: heroku run rake db:migrate
Cuando se termine de ejecutar el comando, puedes acceder a tu aplicación mediante su URL. Para esta aplicación de ejemplo, puedes ir a http://sheltered-refuge-6377.herokuapp.com/. También puedes digitar heroku open
en la terminal para visitar la página.
Notas de cierre
La plataforma de Heroku no existe sin tener algunas particularidades. Las aplicaciones que se ejecutan en Heroku viven dentro de un ambien efímero, esto significa que (excepto por la información almacenada en tu base de datos), cualquier archivo creado por tu aplicación desaparecerá si ésta es reiniciada (por ejemplo, cuando pusheas una nueva versión).
Ephemeral filesystem
Cada dyno obtiene su propio sistema de archivos efímero, con una copia fresca del código más recientemente deployadp. Durante la vida de un dyno, sus procesos en ejecución pueden usar el sistema de archivos como un almacenamiento temporal, pero ningun archivo que es creado o guardado es visible a los procesos de cualquier otro dyno, y cualquier archivo escrito será descartado en el momento en el que el dyno sea detenido o reiniciado.
En la aplicación de tutorial, la habilidad de adjuntar archivos al registro de Idea crea nuevos archivos en el folder public/uploads
de tu aplicación. El almacenamiento efímero en Heroku hará que actúe de la siguiente manera:
- Lanza la app con
heroku open
- Agrega una nueva Idea con una imagen
- Reinicia la aplicación ejecutando
heroku restart
- Regresa a tu Idea y vuelve a cargar la página, la imagen ya no debería ser visible
Trabajando alrededor del almacenamiento efímero
Obviamente esto no se ve útil si es que estuvieras corriendo una aplicación en la vida real, pero hay maneras de trabajar alrededor de esto utilizadas por varios sitios web populares.
El método más común es usar un servidor host externo para los activos, como Amazon S3 (Simple Storage Service) o Rackspace CloudFiles. Estos servicios proveen (por un bajo costo - usualmente menos de $0.10 por GB) almacenamiento ‘en la nube’ (lo que significa que potencialmente los archivos podrían estar almacenados en cualquier sitio). Tu aplicación sería capaz de usar esto como un almacenamiento persistente.
Mientras esta funcionalidad está un poco fuera del alcance de este tutorial, aquí hay algunos recursos disponibles que puedes usar para encontrar tu camino:
Como siempre, si requieres más información o asistencia, tus coaches serán capaces de ayudarte.