heroku es un hosting para aplicaciones hechas en Ruby on Rails, un hosting bastante interesante y con un monton de add-ons para agregar mayor funcionalidad a las aplicaciones, más información en heroku.com/how.
Como dice el título, este es un breve resumen para poder desplegar aplicaciones en este hosting:
Tiendo en cuenta las siguientes consideraciones:
- Versión de rails: 3.2.3
- Base de datos: postgres
- Control de versiones: git
Suponiendo que la aplicación ya esta en git.
Registrarse en heroku
Es necesario registrar en el sitio de heroku, se tienen varios planes, para probar se puede usar una cuenta gratuita la cual cuenta con todas las características mínimas necesarias para poder desplegar las aplicaciones.
Instalar Toolbelt
También es necesario instalar heroku Toobelt, la aplicación para poder manejar heroku desde consola. Las plataformas disponibles son Windows, Mac OS y Debian/Ubuntu. Para Arch se tiene el paquete ruby-heroku.
Loguearse en heroku
Se hace mediante consola:
heroku login
Ahí es necesario ingresar el nombre de usuario con el que se registro en heroku y la contraseña, si no tienes una clave pública el mismo programa te sugerirá crear una, lee bien todos los mensajes.
Crear un repositorio remoto de heroku
Suponiendo que ya se tiene git configurado y funcionando, dentro del directorio de la aplicación es necesario crear el repositorio, recuerdo que todo se hace mediante la consola:
heroku create --stack cedar
Aclaro que es muy importante leer todos los mensajes que devuelve la aplicación por consola.
Para poder ver los repositorios disponibles:
git remote -v
Crear la base de datos de postgres
Se realiza de manera sencilla, en consola:
heroku addons:add heroku-postgresql:dev --app herokuApp
Donde:
- heroku-postgresql:dev, es el plan registrado, si el plan fuera otro se puede cambiar dev por ejemplo por ronin.
- herokuApp, es el nombre de la aplicación creada en el paso anterior, se pueden ver las aplicaciones disponibles ingresando a la cuenta creada en heroku e ingresando a la sección MyApps.
Desplegar la aplicación
Hasta aquí la aplicación esta casi lista solo falta agregar los archivos a heroku:
git push heroku master
Ahora solo queda esperar que los archivos se suban a la cuenta de heroku, instalar las gemas y desplegar la aplicación, heroku lo hace todo.
Tal vez sea necesario crear la base de datos, nuevamente recuerdo leer los mensajes en consola
heroku run rake db:migrate
Errores comunes
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins!
…
Si este aparece puede suceder dos cosas:
1. Si el directorio vendor/plugins de la aplicación esta vacía entonces no es necesario hacer nada.
2. Si no, leer estos dos artículos:
- http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released/
- http://code.coneybeare.net/how-to-convert-simple-rails-23-style-plugins
heroku error: «Permission denied» (public key)
Es necesario agregar la clave pública del equipo a heroku:
heroku keys:add ~/.ssh/id_rsa.pub
Running `rake db:migrate attached` to terminal… up, run.1
/Users/user/.heroku/client/lib/heroku/client/reendezvous.rb:87:in `fixup’: undefined method
…
Bien, este error se presento en Mac, el archivo en cuestión es reendezvous.rb y en la función mencionada se tiene:
def fixup(data) data.force_encoding('utf-8') output.isatty ? data : data.gsub(/\cM/,"") end
Se tiene que comentar la línea que causa el error, quedando de la siguiente manera:
def fixup(data) #data.force_encoding('utf-8') output.isatty ? data : data.gsub(/\cM/,"") end
Tips útiles
1. Logs de heroku, muy útil para descubrir errores:
heroku logs --app herokuApp
2. Ver las aplicaciones corriendo en heroku:
heroku ps
3. Reiniciar aplicaciones en heroku:
Una vez visto las aplicaciones con el comando anterior:
heroku restart web.#
Donde # es el número de la aplicación.
4. Ver todos los comandos disponibles:
heroku help
5. Actualizar el repositorio heroku
git add . git commit -m 'message to update' git push heroku
Más información en: