viernes, 26 de febrero de 2016

Ruby sin rails: uso de gemas


Las gemas son los componentes con los que ruby extiende la funcionalidad. Los podéis concebir como clases, paquetes, extensiones, etc.. La cosa es añadir componentes sobre los que construir nuestras aplicaciones.

Hay gente que en sus primeros pasos queda impresionada por la potencia de Rails y piensa que las "gems" le son propias, pero desconocen que esas gemas pueden ser usadas también cuando hacemos un programa o script, es decir, fuera de Rails.


¿ Dónde están las gemas ?

Preguntamos por el environment del comando "gem" y nos indica la ubícación del depósito de gemas:
$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.23
- RUBY VERSION: 1.9.3 (2013-11-22 patchlevel 484) [x86_64-linux]
- INSTALLATION DIRECTORY: /var/lib/gems/1.9.1
- RUBY EXECUTABLE: /usr/bin/ruby1.9.1
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
   - ruby
   - x86_64-linux
- GEM PATHS:
   - /var/lib/gems/1.9.1
   - /home/user/.gem/ruby/1.9.1
   - /usr/share/rubygems-integration/1.9.1
   - /usr/share/rubygems-integration/all
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - http://rubygems.org/

El directorio /var/lib/gems/1.9.1 de forma genérica y el resto de los GEM PATHS pueden albergarlas. Las gemas estarán accesibles desde cualquiera de esas rutas.

Instalación de gemas
$ gem install mysql2
Si queremos instalar una versión concreta tenemos el modificador "-v"
$ gem install mysql2 -v 0.3.14

La ubicación será una de las anteriores. Depende de si eres el usuario root o no. El listado completo de gemas que un usuario tiene accesibles se puede obtener con el siguiente comando:
$ gem list --local

*** LOCAL GEMS ***

mysql2 (0.4.3, 0.3.16, 0.3.14)
actionmailer (4.0.3, 4.0.2)
actionpack (4.0.3, 4.0.2)
[...]
Si queremos eliminar una versión concreta de una gema
$ gem uninstall mysql2 -v 0.3.14

Uso de una gema en un script
El uso de la gema es tan sencillo como incluir "require" y el nombre de la gema.
#!/usr/bin/env ruby

require 'mysql2'
# Uso de la gema...

No hay comentarios:

Publicar un comentario