Heroku

Heroku es un servicio en la nube para el alojamiento de aplicaciones web. Dentro de los diversos tipos de servicios que nos ofrece la nube, Heroku se encuentra en el grupo de PaaS, Platform as a Service o Plataforma como servicio. Nos permite habilitar nuevas funcionalidades para nuestras aplicaciones en forma de addons así como escalar nuestra aplicación de una forma bastante sencilla. Por último, nos permite desplegar cualquier aplicación Ruby que utilice el interfaz Rack, como son por ejemplo Rails o Sinatra. Además también nos permite desplegar aplicaciones Node.js y desde hace poco aplicaciones Java.

Crear una aplicación en Heroku es bastante simple, al menos para aplicaciones Rails que es con lo que he probado.

Lo primero que hay que hacer es descargar la gem de Heroku, lo que se hace con un único comando:

gem install heroku

Una vez hecho esto, ya podemos utilizar los comandos de Heroku para desplegar nuestra aplicación en la nube. Hay que tener en cuenta que Heroku nos ofrece como base de datos PostgreSQL, por lo que deberíamos cambiar la gem correspondiente a la base de datos que usemos por la gem pg. Lo siguiente que tenemos que hacer es tener nuestra aplicación en un repositorio Git, ya que lo que haremos cada vez que queramos desplegar nuestra aplicación es hacer un push de nuestra aplicación al repositorio que hay en Heroku.

git init
git add .
git commit -m "Primer commit"

Una vez hecho esto ya podemos crear la aplicación en Heroku.

heroku create [--stack cedar]

La parte de “–stack cedar” es opcionar. El stack cedar el la última versión de la plataforma, por así decirlo, y todavía está en fase beta, pero parece ser que es necesario para las aplicaciones Rails 3.x.

Por último desplegamos la aplicación.

git push heroku master

Con esto ya tenemos el código en el servidor de aplicaciones, y tan sólo nos faltaría crear la base de datos en caso de que fuera necesario.

heroku rake db:migrate

En la web de heroku podemos ver la url de nuestra aplicación, cambiar la url y alguna cosa más. También podéis abrir la aplicación ejecutando:

heroku open

Y eso es todo, con esto ya tenéis una aplicación Rails en Heroku!

CKEditor

Últimamente no tengo mucho tiempo para dedicarle a nada que no sea trabajar, y mucho menos para dedicárselo al blog. Uno de los motivos era que no había conseguido poner ningún editor de texto enriquecido que funcionara correctamente, sobretodo cuando subía la aplicación a Heroku, por lo que tenía que escribir los posts en HTML, lo que me llevaba mucho tiempo adicional.

Pero el otro día navegando de un lado para otro me encontré con CKEditor, un editor de texto enriquecido que parece funcionar de forma bastante fácil con Rails. A pesar de funcionar bastante bien, la instalación no es precisamente intuitiva, sobretodo utilizando Rails 3.1 y haciendo la instalación en Heroku, así que os indico los pasos a seguir.

Lo primero es incluir el gem de CKEditor en nuestro Gemfile:

gem "ckeditor"

Después de hacer el consabido bundle install debemos descargar e instalar lo que es el CKEditor propiamente dicho, no la gem. Para esto ejecutamos lo siguiente:

rails generate ckeditor:install --path=public/assets

Esto descargará CKEditor y nos lo dejará en la ruta que le hemos indicado. Si utilizamos Rails 3.1 la ruta debe ser la que he puesto, public/assets.

Una vez hecho esto ya tenemos todo lo necesario para utilizar ckeditor en nuestra aplicación. Si queremos utilizar las opciones para subir ficheros, deberemos ejecutar algún comando más que está indicado perfectamente en la documentación, por lo que no lo voy a indicar.

Para incluir un editor en una de las páginas de nuestra aplicación debemos incluir el JavaScript de ckeditor:

<%= javascript_include_tag "/assets/ckeditor/ckeditor.js" %>

Una vez hecho esto ya podemos incluir un editor (o los que queramos) en la página, por ejemplo:

cktext_area_tag("blog_contenido", "Contenido del textarea")

Y eso es todo, con esto tenemos en nuestra aplicación un completo editor de texto enriquecido.

En la documentación podemos encontrar todas las opciones adicionales así como las distintas configuraciones que podemos utilizar.