Deploy de Rails 3 en Heroku



Así que tienes una aplicación Rails Completa y lista para que el mundo la vea eh? Pues bueno, Toca subirla a un servidor público donde por fin, pase a producción y pueda ser visitada y utilizada por las personas alrededor del mundo. En esta ocasión, te hablaré de 1 opción gratuita para lograr este cometido: Heroku.

Heroku es un cloud stack especialmente diseñado para correr aplicaciones Rails (y otras también), tiene muy buenas prestaciones incluso en las versiones gratuitas del servicio y también un sistema de cuotas bastante cómodo, aunque tiene sus limitaciones como todo, Pero en sí, es excelente.

Empecemos pues con Heroku:

NOTA: Para poder usar Heroku, nuestra aplicación debe tener un repositorio Git inicializado, y lo que se subirá al servidor será el último commit que hayamos guardado. Si no sabes cómo usar Git, checa nuestro tutorial sobre el tema.

Pasos a Seguir

Crearse una cuenta

Para subir tu aplicación Rails a Heroku, primero nos crearemos una cuenta desde acá, para poder tener acceso al servicio y sus prestaciones. Luego instalamos el Heroku Toolbelt y más tarde sus "dependencias" desde nuestra terminal (fuera de la carpeta de nuestro proyecto, en el prompt principal) con:

gem install taps pg

Las Deps!

luego añadiremos dichas gemas a nuestro proyecto con las siguientes líneas en el Gemfile:

NOTA: Estas van abajo de la gema rails en tu Gemfile en lugar de la línea gem 'sqlite3' que está por default en esa posición...

group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end

y luego, debajo de la gema jquery-rails añadimos:

gem 'taps'

Más tarde corremos:

1. bundle install --without production
2. rake db:setup RAILS_ENV="production"
3. rake db:migrate
4. rake assets:precompile
5. rails s -e production

Nos vamos a http://localhost:3000 y si vemos nuestra app significa que todo salió bien, cerramos el servidor con Crtl+C desde la consola y luego seguimos con el tutorial.

NOTA: Si están usando Twitter Bootstrap en su proyecto, es probable que no vean el estilizado en el servidor de producción simulado por el último comando hasta que suban su app a Heroku bien a bien.

SSH

Heroku necesitará que tengas una clave SSH pública disponible para poder permitirte subir tu aplicación. Instala los paquetes ssh y/o openssh en tu distro linux (asumo que están en Linux porque la mayoría que lee este blog es linuxera jajajaa) y luego genera y sube tu clave al servicio como acá te explican:

https://devcenter.heroku.com/articles/keys

Subiendo la aplicación a Heroku

Para subir la aplicación deseada al servicio, usaremos los siguientes comandos dentro de la misma terminal:

1. git init (Si no tenías un repo Git inicializado en el directorio de la App)
2. git add .
3. git commit -m "Heroku Ready"
4. heroku login
5. heroku create myapp (Nombre de tu app)
6. git push heroku master
7. heroku rake db:migrate
8. heroku open

Estos comandos lo que harán será lo siguiente: El número 1, inicializará un repo git nuevo en nuestro directorio de la app (obvio tienes que tener Git configurado y funcionando en el sistema) El 2 añadirá la lista de archivos al repo, El tercero añadirá los archivos en sí y el 4to nos logueará a Heroku. El 5to generará nueva instancia dentro de heroku usando la última versión de las instancias disponible. El sexto, subirá a dicha instancia nuestra aplicación y el séptimo hará una migración de la base de datos lista para el servidor de producción. Finalmente, el comando #8 abrirá dicha aplicación para que la veamos funcionando en el servidor de producción con nuestro navegador web.

Puedes checar más opciones de la gestión de instancias en Heroku directo en su página oficial y en la sección de Heroku Commands.