RubyGems: Conceptos Básicos (3)

El comando gem permite interactuar con las gemas de Ruby.

Ruby 1.9 y versiones más nuevas vienen con RubyGems incorporado, pero es posible que debas actualizar para corregir errores o nuevas funciones.

Si quieres actualizar RubyGems o instalarlo por primera vez (necesitas usar Ruby 1.9), visita la página de descarga.

Encontrar GEMAS

El comando search te permite encontrar gemas remotas por su nombre. Puede usar caracteres de expresión regular en su consulta:

$ gem search ^rails

*** REMOTE GEMS ***

rails (4.0.0)
rails-3-settings (0.1.1)
rails-action-args (0.1.1)
rails-admin (0.0.0)
rails-ajax (0.2.0.20130731)
[...]

Si ves una gema sobre la que deseas obtener más información, puedes agregar la opción de detalles.

Sin embargo, querrás hacer esto con una pequeña cantidad de gemas, ya que listar gemas con detalles requiere descargar más archivos:

$ gem search ^rails$ -d

*** REMOTE GEMS ***

rails (4.0.0)
    Author: David Heinemeier Hansson
    Homepage: http://www.rubyonrails.org

    Full-stack web application framework.

También puede buscar gemas desde el sitio web rubygems.org como [esta búsqueda de rake]:

https://rubygems.org/search?query=MasNombrePorBuscar

Instalación de GEMAS

El comando install descarga e instala la gema y las dependencias necesarias y luego genera la documentación para las gemas instaladas.

$ gem install drip
Fetching: rbtree-0.4.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed rbtree-0.4.1
Fetching: drip-0.0.2.gem (100%)
Successfully installed drip-0.0.2
Parsing documentation for rbtree-0.4.1
Installing ri documentation for rbtree-0.4.1
Parsing documentation for drip-0.0.2
Installing ri documentation for drip-0.0.2
Done installing documentation for rbtree, drip after 0 seconds
2 gems installed

Aquí el comando de depende de la gema rbtree que tiene una extensión. Ruby instala la dependencia rbtree y crea su extensión, instala la gema de goteo y luego crea la documentación para las gemas instaladas.

Puedes deshabilitar la generación de documentación usando el argumento --no-doc al instalar la gema.

Código requerido

RubyGems require es capaz de modificar la ruta de carga de Ruby, que controla cómo la declaración encuentra el código de Ruby.

Cuando require obtiene una gema, en realidad solo estás colocando el directorio lib de esa gema en tu archivo $LOAD_PATH.

Puedes probar esto con irb y obtén ayuda de la biblioteca pretty_print incluida con Ruby.

Sugerencia: Pasar -r a irb requiere automáticamente una biblioteca cuando se carga irb.

% irb -rpp
>> pp $LOAD_PATH
[".../lib/ruby/site_ruby/1.9.1",
 ".../lib/ruby/site_ruby",
 ".../lib/ruby/vendor_ruby/1.9.1",
 ".../lib/ruby/vendor_ruby",
 ".../lib/ruby/1.9.1",
 "."]

De forma predeterminada, solo tiene unos pocos directorios del sistema en la ruta de carga y las bibliotecas estándar de Ruby.

Para agregar los directorios awesome_print a la ruta de carga, puede solicitar uno de sus archivos:

% irb -rpp
>> require 'ap'
=> true
>> pp $LOAD_PATH.first
".../gems/awesome_print-1.0.2/lib"

Nota: para Ruby 1.8, debe hacer require 'rubygems' antes de solicitar las gemas.

Una vez que haya solicitado ap RubyGems coloca automáticamente el directorio lib en el archivo $LOAD_PATH.

Eso es básicamente todo lo que hay en una gema.

Suelta el código de Ruby en lib, asigna un nombre a un archivo de Ruby igual que tu gema (para la gema “freewill”, el archivo debe ser `freewill.rb y RubyGems lo podrá cargar.

El directorio lib en sí, normalmente contiene solo un archivo .rb y un directorio con el mismo nombre que la gema que contiene el resto de los archivos.

Por ejemplo:

% tree freewill/
freewill/
└── lib/
    ├── freewill/
    │   ├── user.rb
    │   ├── widget.rb
    │   └── ...
    └── freewill.rb

Listado de gemas instaladas

El comando list muestra sus gemas instaladas localmente:

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.0)
drip (0.0.2)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rbtree (0.4.1)
rdoc (4.0.0)
test-unit (2.0.0.0)

(Ruby viene con algunas gemas por defecto, bigdecimal, io-console, json, minitest, psych, rake, rdoc, test-unit para ruby 2.0.0).

Desinstalar GEMAS

El comando uninstall elimina las gemas que has instalado.

$ gem uninstall drip
Successfully uninstalled drip-0.0.2

Si desinstalas una dependencia de una GEMA. RubyGems te pedirá confirmación.

$ gem uninstall rbtree

You have requested to uninstall the gem:
  rbtree-0.4.1

drip-0.0.2 depends on rbtree (>= 0)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN]  n
ERROR:  While executing gem ... (Gem::DependencyRemovalException)
    Uninstallation aborted due to dependent gem(s)

Visualización de la documentación

Puedes ver la documentación de sus gemas instaladas con el comando ri:

$ ri RBTree
RBTree < MultiRBTree

(from gem rbtree-0.4.0)
-------------------------------------------
A sorted associative collection that cannot
contain duplicate keys. RBTree is a
subclass of MultiRBTree.
-------------------------------------------

Obteniendo y desempaquetando GEMAS

Si deseas auditar el contenido de una gema sin instalarla, puedes usar el comando fetch para descargar el archivo .gem y luego extraer el contenido con el comando unpack.

$ gem fetch malice
Fetching: malice-13.gem (100%)
Downloaded malice-13
$ gem unpack malice-13.gem
Fetching: malice-13.gem (100%)
Unpacked gem: '.../malice-13'
$ more malice-13/README

Malice v. 13

DESCRIPTION

A small, malicious library.

[...]
$ rm -r malice-13*

También puede descomprimir una gema que hayas instalado, modificar algunos archivos y luego usar la gema modificada en lugar de la instalada:

$ gem unpack rake
Unpacked gem: '.../rake-10.1.0'
$ vim rake-10.1.0/lib/rake/...
$ ruby -I rake-10.1.0/lib -S rake some_rake_task
[...]

Con el argumento -I puedes agregar el rake desempaquetado al rubí $LOAD_PATH, lo que evita que RubyGems cargue la versión de la gema (o la versión predeterminada).

El argumento -S se encuentra rake en el shell de $PATH para que no tengas que escribir la ruta completa.


Seguir Aprendiendo

Esta guía solo muestra los aspectos básicos del uso del comando gem.

Para obtener información sobre lo que hay dentro de una gema y cómo usar una que hayas instalado, consulta la siguiente sección, ¿Qué es una gema?

Para obtener una referencia completa de los comandos de gemas, consulte la referencia de comandos.


<<

Relacionado

15 Mejores Lenguajes de Programación que Aprender

Una de las habilidades más importantes para aprender en el mundo de hoy en día, es saber programar con un lenguaje de programación. En la actualidad, las computadoras han entrado en casi todas las industrias, desde el piloto automático de un avión hasta el velocímetro digital de una bicicleta pasando por la inclusión del Internet de las cosas en los pequeños electrodomésticos. Casi todo lo que ¡SEGUIR LEYENDO!

Mejores Libros PDF de Programación y Tecnología GRATIS

Los Mejores Libros PDF Gratuitos de Informática. EL sitio perfecto para aprender a programar desde cero para principiantes con las mejores guías gratis. Esta es la mejor lista de libros de programación en PDF en español del mundo. Una completa biblioteca recopilada de cientos y cientos de libros en PDF que no encontrarás en ninguna parte más. Aquí, vas a encontrar libros enfocados hacía programadores. Sobre ¡SEGUIR LEYENDO!

Más de 1.500 Libros PDF en Inglés de Desarrollo Web, Programación, Seguridad, Robótica, Blockchain, Domótica y Mucho Más

La mejor lista de libros sobre lenguajes de programación en inglés de todo Internet. https://ciberninjas.com/zlibrary/ Libros de Python / Libros PHP / Libros Java / Libros Diseño Meta Listas atariarchives.org atariarchives.org pone a disposición en la Web libros, información y software para Atari y otras computadoras clásicas. Bento Bitsavers.org Bookboon: se requiere cookie de TI y programación</. (requiere @email) DZone - Hojas de trucos (gratis) Conceptf1.blogspot.com ¡SEGUIR LEYENDO!

Comparando Python con otros lenguajes de programación populares

Este artículo analiza los numerosos beneficios de Python como uno de los lenguajes de programación más importantes disponibles y por qué deberías considerar usarlo para tu proyecto de software en lugar de otras opciones populares. Python es considerado como uno de los lenguajes de programación más utilizados para aplicaciones sencillas y prácticas. Los especialistas en TI afirman tener al menos una comprensión rudimentaria de Python y ¡SEGUIR LEYENDO!

Crystal: Un nuevo lenguaje de programación que buscar integrar lo mejor de Ruby y C

Crystal, un nuevo lenguaje de programación de sistemas compilados y orientado a objetos que tiene como objetivo combinar la concisión y amabilidad de Ruby con la eficiencia de C. La versión 1.0 de Crystal tiene una sintaxis cercana a la de Ruby y presenta tipos inferidos estáticamente, enlaces C y macros. El lenguaje de Crystal podría atraer a los desarrolladores con experiencia en Ruby/Rails o Elixir/Phoenix. ¡SEGUIR LEYENDO!

Cursos de Udemy con Cupón Gratuito 2019 (en Inglés)(parte 2)

All courses are in English ? Estos son los cursos con cupones gratuitos que me han parecido más interesantes y existen en la actualidad dentro de la plataforma Online de Udemy. Los contenidos en los que están organizados se reparten en: las criptomonedas, el diseño gráfico, la programación y el diseño web, ofimática, productividad, marketing y SEO, las redes y la robótica El listado final se ¡SEGUIR LEYENDO!

Mejores cursos de introducción a la programación

Muchos de estos cursos ya están incluidos en nuestro recopilatorio de cursos en español, allí podrás encontrarlos ordenados por temáticas y navegación de botones. En este otro enlace, podrás encontrar libros. Si lo que deseas es aprender a programar, no dejes de investigar más en profundidad alrededor de toda la web; y también, puedes investigar entre los cientos de recursos gratis que te ofrece Ciberninjas. A ¡SEGUIR LEYENDO!

Deja un comentario

Salir de la versión móvil