Jekyll

22 marzo 2015

Jekyll es un generador de web estáticas muy simple que hace que solo nos tengamos que centrar en lo importante, el contenido de nuestra página. Esta especialmente pensado para blogs y permite alojar las páginas en GitHub, por lo que todo es mucho más sencillo, la idea de permitir a la gente generar blogs usando páginas webs estáticas en HTML y además haciendo uso del control de versiones que GitHub ofrece, el resultado un sistema que elimina la complejidad de otras herramientas que requieren conocimientos mas avanzados como pueden ser WordPress o Mephisto, y nos permite editar nuestros blogs en documento de texto a través de Textile (« Markdown »).

Para saber más sobre Jekyll te recomiendo leer el post de su creados Tom Preston Blogging Like a Hacker.

Si vistamos la página web de Jekyll y seguimos su tutorial de instalación, nos llevaremos la falsa sensación de que todo es muy sencillo y la verdad es que si queremos desplegar una página web fuera de nuestro equipo, es muy sencillo, pero si queremos instalarlo localmente para previsualizar nuestro trabajo las cosas se vuelven un poco complicadas, por lo que voy a intentar explicar el proceso completo que llevé a cabo explicando las dudas y problemas que surgieron.

Instalación

GitHub que permite alojar web públicas, es gratuito y están alojadas bajo el dominio github.io, en caso de tener una cuenta gratuita los dominios están restringidos a usuario.github.io.

Podemos crear dos tipos de páginas web: usuario y organización, ambas son muy similares y se despliegan casi de la misma manera, las páginas de usuario están alojadas en un repositorio exclusivo para la web y utiliza la rama master para generar el contenido, y la de proyecto están alojadas en un repositorio compartido con otro proyecto y genera el contenido a partir de la rama gh-pages.

Vamos a utilizar una herramienta que provee GutHub llamada github-pages, es una gem, es decir un paquete de Ruby, (en el siguiente apartado lo explicaremos), que nos facilitará gestionar Jekyll y sus dependencias, es decir nos va a evitar problemas de versiones al desplegar nuestra web.

A partir de ahora vamos a seguir el tutorial que Github facilita GitHub Pages:

Requerimietos:

1.Ruby

En mi caso uso Ubuntu 12.04 que ya incluye la versión 1.8 de Ruby, esto lo podemos comprobar en consola:

$ ruby --version

Jekyll necesita la versión 1.9.3 o superior por lo tanto hay que actualizarla, para evitar problemas de configuraciones y conflictos de versiones se recomienda el uso de RVM para gestionar y actualizar nuestro entorno a la hora de trabajar con Ruby, nuestra primera idea sería la de usar el package manager de Linux $ apt-get, pero esto nos obliga a vigilar las dependencias y versiones, y sobre todo posibles conflictos entre las gems que utilizaremos, RVM nos evita tener que preocuparnos de todo esto y nos permite cambiar de versiones de Ruby de manera rápida y sencilla para poder trabajar en múltiples entornos de Ruby autocontenidos e independientes.

Instalar RVM:
  1. Lo primero que necesitaremos es instalar curl si aún no lo tenemos en nuestro equipo, mas información sobre curl:
  $ Apt-get install curl
  1. Para descargar RVM:
  $ url -sSL https://get.rvm.io | bash -s stable

En caso de que surjan conflictos con la firma, sigue las instrucciones de su web. Instalar RVM toma un par de minutos pero nos ahorrara mucho dolor con las dependencias, configuración y versiones.

  1. Ahora haciendo uso de RVM instalamos y configuramos la versión de Ruby que necesitamos:
  $ RVM isntall ruby-2.0
$ RVM use ruby-2.0
  1. Y sólo queda comprobar que todo ha funcionado:
  $ ruby --version
ruby 2.0.xxxxx

Ya tenemos instalada la versión necesaria de Ruby y además hemos instalado y aprendido, de manera básica, a usar RVM un gestor de entornos múltiples y autocontenido Ruby para controlar las versione y dependencias que personalmente antes no conocía y he encontrado bastante útil.

2.Bundler:

Es un gestor de paquetes para Ruby, localiza e instala las gems necesarias y sus correspondientes versiones, es muy útil ya que evita que tengamos que gestionarlas nosotros manualmente. Simplemente es necesario crear y editar un archivo en la raíz del proyecto Ruby (en nuestro caso nuestro repositorio) llamado « Gemfile », en el especificamos la fuente de dónde queremos descargar las gems y sus correspondientes versiones, a partir de aquí Bundler se encargará de detectar si ya están instaladas y en caso contrario procederá a hacerlo.

Para instalar Bundler:

  1. Bundler en sí es una gema, por lo tanto procedemos a instalarla:
$ gem install bundler

3.Jekyll:

Usaremos GitHub Pages para alojar el sitio web, por lo tanto lo primero será disponer de un repositorio en GitHub que nos permita hacerlo y clonarlo en nuestro equipo, antes ya hemos hablado de los dos tipos de páginas que podemos generar, usuario o proyecto, en este caso es de usuario por lo que recuerda trabajar en la rama master, el repositorio debe nombrarse siguiendo la siguiente nomenclatura: username.github.io, una vez creado tenemos que clonarlo en nuestro equipo.

$ git clone https://github.com/username/username.github.io

Para evitar la gestión de dependencias, tanto en el servidor GitHub Pages como en el equipo (Markdown, y otras dependencias de Jekyll) de manera manual, seguimos las recomendaciones que la página de Jekyll, así como la de GitHub nos da y usaremos la gema que GitHub Pages nos proporciona llamada github-pages, que instalaremos usando Bundler creando un archivo en la raíz de nuestro repositorio llamado Gemfile en el que indicamos la fuente de las gemas y las gemas que nos queremos descargar, en este caso:

source 'https://rubygems.org'
gem 'github-pages'

Ejecutar Jekyll

Ya hemos terminado con todos requisitos en nuestro equipo solo nos queda probar que todo funciona y ejecutar Jekyll. Arrancar el servidor Jekyll es muy sencillo, lo hacemos a través de Bundler usando el comando exec para utilizar las gemas especificadas en el Gemfile que previamente hemos instalado:

$ bundle exec jekyll serve

Conclusión

Por ahora sólo he usado Jekyll durante unos días, lo justo para generar este blog y escribir este post, la sensación que he tenido es que la documentación disponible en la pagina de Jekyll, así como en GitHub, esta un poco desorganizada y durante el proceso de instalación encontré bastantes dificultades, pero el resultado tras un par de tardes de trabajo ha sido mas que satisfactorio, descubriendo el potencial de Jekyll y bastantes herramienta como RVM que serán muy útiles.

Aquí concluimos con el proceso de instalación y ejecución de Jekyll, en el siguiente post cubriremos como configurarlo, editar la apariencia del blog y generar contenido.

Gracias por leer este post y espero que haya sido de utilidad.

Referencias:


Publicado el 22 marzo 2015 por Alfredo Cerezo.
Jekyll