miércoles, 14 de diciembre de 2011

Potenciando Ruby con RubyGems y Bundler

Primer post sobre Ruby en el blog que además tiene bastante sentido debido a que son cosas que he aprendido mientras realizo mi PFC y que le será útil a los que hemos aprendido (o estamos aprendiendo) Ruby por nuestra cuenta. Comencemos...


RubyGems

RubyGems es un repositorio público donde están alojadas prácticamente todas las gemas públicas que hay en Ruby. Para quien no esté acostumbrado a este término, una gema es algo similar a una librería o biblioteca, por ejemplo Log4J era una librería, con lo que nuestros desarrollos se verán potenciados de una forma increíble ya que existen gemas para hacer casi cualquier cosa que nos imaginemos.

Además RubyGems, también es un gestor de estas gemas por lo que nos facilitará la tarea de instalar las mismas en nuestro sistema. Para usarlo, debemos instalarlo en nuestra máquina. Concretamente en el ejemplo, usaremos Ubuntu:

sudo apt-get install rubygems
sudo gem update --system


La gema Bundler


Ya tenemos en nuestro sistema instalado RubyGems, ahora vamos a aprovechar y hablar también de Bundler que es una gema que nos permitirá a partir de un fichero (Gemfile), poder definir todas las gemas que vamos a utilizar en un proyecto y en caso de que no las tengamos instaladas, se instalarán automáticamente.

Instalemos Bundler:

sudo gem install bundler

Nótese que acabamos de utilizar RubyGems (gem) para instalar Bundler.

Ahora donde tengamos nuestro proyecto, en la carpeta root de él, deberemos crear un archivo que se llame Gemfile (sin extensión) en el que definiremos las gemas de la aplicación.

source "http://rubygems.org"
source "http://gems.github.com"

gem "redis", "~> 2.2.2"
gem "json", "~> 1.6.1"
gem "rake", "~> 0.9.2.2"


Vemos que sigue una estructura bien definida, primero definimos las fuentes de dónde conseguir las gemas (pueden ser varias)

source "direcciondelrepositorio"

y luego  definimos las gemas mediante la directiva gem que irá seguida de el nombre de la gema y de la versión concreta que se usará en el proyecto (así eliminamos el problema de tener diferentes versiones en el ordenador del desarrollador y en el ordenador del cliente).

gem "redis","~>2.2.2"

Si por un casual, no sabemos qué versión necesitaremos o cómo escribirlo en el Gemfile, es recomendable ir a la página de RubyGems y ahí buscar en el buscador la gema que vamos a usar puesto que a parte de tener información acerca de ella (y probablemente una documentación de la API) también estará definida la línea a introducir en el Gemfile.


Utilizando las gemas

Bueno, pues ya tenemos definidas las gemas que usaremos en el proyecto, ahora podremos incluirlas en nuestros ficheros de código fuente y usarlas mediante la directiva require:

require "rubygems" 
require "bundler/setup"
require "redis"

NOTA: Siempre hay que incluir previamente rubygems y el bundler (si se usa éste último)

Antes de poder ejecutar nuestro código tenemos que instalar estas gemas que todavía no tenemos, usaremos Bundler en la misma carpeta que tenemos el archivo Gemfile:

sudo bundle install

Con esto ya tenemos completamente funcional nuestro sistema de gemas y podremos añadirlas a nuestro ordenador de forma automática.

Espero que haya sido útil esta explicación de para qué sirve RubyGems y de la gema Bundler, la próxima vez que vuelva a hablar de Ruby, le tocará el turno a la gema Rake que nos servirá para automatizar tareas (de igual forma que lo hacen Ant o Maven en Java). 

No hay comentarios:

Publicar un comentario