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

Utiliza el lenguaje de Ruby para generar publicaciones de ebooks

Muchas veces, la gente se pregunta para qué puede servir además de para utilizarlo junto a Rails. Bien, pues Ruby es ideal para varias tareas en diferentes campos de dominio y hoy vamos a compartir gustaría cómo cualquier persona puede usar Ruby para publicar un ebook o libro electrónico. Publicación en PDF Existe un conjunto de herramientas completo de Ruby para publicar contenidos técnicos en AsciiDoc ¡SEGUIR LEYENDO!

The best Udemy courses in August, only for 9.99 $

Los mejores cursos en inglés y en oferta, hasta el día 27. Los cursos incluidos aquí son todos en inglés. Revisa por aquí, entre los mejores cursos en oferta de Udemy de Agosto en español, si lo que deseas son cursos en español. Si por desgracia, no tienes la oportunidad de acceder a comprar alguno de los excelentes cursos que te mostraré a continuación. Siempre puedes ¡SEGUIR LEYENDO!

Si los Lenguajes de Programación fueran Superhéroes de Marvel serían..

Existen más de 750 lenguajes de programación en el universo de la programación y cada lenguaje de programación tiene un tono y un conjunto de características únicos. https://ciberninjas.com/mejores-lenguajes-programacion-2023/ No debería sorprender que este conjunto específico de características atraiga a los excéntricos, quienes ocasionalmente se reúnen para discutir entre sus diferencias, ventajas y desventajas. Consideremos un escenario fantástico donde MCU signifique "My Universo del Código" y cada ¡SEGUIR LEYENDO!

Shopify invierte en realizar investigaciones sobre Ruby a escala

Shopify continúa invirtiendo en Ruby on Rails a escala, financiando a académicos de alto perfil para lograr enfocar su trabajo hacia el estudio de Ruby y las necesidades de la comunidad de Ruby. Durante el año pasado, Shopify entregó casi medio millón de dólares en obsequios a investigadores influyentes de la comunidad de Ruby. En este punto, Shopify busca que los desarrollos en lenguajes de programación ¡SEGUIR LEYENDO!

RubyGems: Referencias archivo GEMSPEC (14)

La clase de especificación contiene la información de una gema. Por lo general, se define en un archivo .gemspec o Rakefile y se ve así: Gema :: Especificación . nuevo hacer | s | s . nombre = 'ejemplo' s . versión = '0.1.0' s . licencias = [ 'MIT' ] s . resumen = "¡Este es un ejemplo!" s . description = "¡Explicación mucho más ¡SEGUIR LEYENDO!

Deja un comentario