stringtranslate.com

Gemas de rubí

RubyGems es un gestor de paquetes para el lenguaje de programación Ruby que proporciona un formato estándar para distribuir programas y bibliotecas Ruby (en un formato autónomo llamado "gema"), una herramienta diseñada para gestionar fácilmente la instalación de gemas y un servidor para distribuirlas. Fue creado por Chad Fowler, Jim Weirich , David Alan Black , Paul Brannan y Richard Kilmer durante RubyConf 2004. [2]

La interfaz de RubyGems es una herramienta de línea de comandos llamada gem , que puede instalar y administrar bibliotecas (las gemas). [3] RubyGems se integra con el cargador en tiempo de ejecución de Ruby para ayudar a encontrar y cargar gemas instaladas desde carpetas de bibliotecas estandarizadas. Aunque es posible utilizar un repositorio privado de RubyGems , el repositorio público es el más utilizado para la administración de gemas.

El repositorio público ayuda a los usuarios a encontrar gemas, resolver dependencias e instalarlas. RubyGems se incluye con el paquete Ruby estándar a partir de Ruby 1.9. [4]

Historia

El desarrollo de RubyGems comenzó en noviembre de 2003 y se lanzó al público el 14 de marzo de 2004, o el Día Pi de 2004. [5] En 2010, el repositorio público predeterminado para gemas se trasladó de gems.rubyforge.org a rubygems.org, que todavía se utiliza. Además, el desarrollo de RubyGems se trasladó a GitHub en 2010. Aunque RubyGems existe desde Ruby 1.8, no fue parte de la distribución estándar de Ruby hasta Ruby 1.9.

Anteriormente, la compatibilidad con RubyGems y Ruby variaba. Muchas versiones de RubyGems son casi totalmente incompatibles con muchas versiones de Ruby y algunas versiones tenían características clave inutilizables. Por ejemplo, Ruby 1.9 venía con RubyGems 1.3.7 en su distribución estándar, pero RubyGems 1.4.x no era compatible con Ruby 1.9. Esto significaba que la actualización de RubyGems en Ruby 1.9 no era posible hasta que se lanzó RubyGems 1.5.0 en 2011, dos años después de la primera versión estable de Ruby 1.9. [6] Estos problemas de compatibilidad llevaron a un rápido desarrollo de RubyGems, cambiando a un cronograma de lanzamiento de 4 a 6 semanas. Esto se refleja en que hubo 38 lanzamientos de 2004 a 2010 y 117 lanzamientos de 2011 a 2016. Se lanzaron 45 versiones en 2013, que es la mayor cantidad de lanzamientos en un año para RubyGems. [5]

Estructura de una gema

Cada gema contiene un nombre, una versión y una plataforma. Las gemas funcionan únicamente en Ruby diseñadas para una plataforma en particular según la arquitectura de la CPU y el tipo y la versión del sistema operativo. [7]

Cada gema consta de:

  1. Código
  2. Documentación
  3. Especificación de gemas (Gemspec)

La organización del código sigue la siguiente estructura para una gema llamada gem_name :

nombre_gema/├── papelera/│ └── nombre_gema├── lib/│ └── nombre_gema.rb├── prueba/│ └── nombre_gema_prueba.rb├── LÉAME├── Archivo de rastrillo└── nombre_gema.gemspec

Preocupaciones de seguridad

Dado que las gemas ejecutan su propio código en una aplicación, esto puede generar diversos problemas de seguridad debido a la instalación de gemas maliciosas. El creador de una gema maliciosa puede comprometer el sistema o el servidor del usuario. [8]

Se han desarrollado varios métodos para contrarrestar la amenaza a la seguridad:

Véase también

Referencias

  1. ^ "Versión 3.5.22". 16 de octubre de 2024. Consultado el 27 de octubre de 2024 .
  2. ^ "174 Rubygems con Eric Hodel". Archivado desde el original el 2021-07-31 . Consultado el 2018-05-09 .
  3. ^ "Referencia de comandos de RubyGems". guides.rubygems.org . Consultado el 18 de septiembre de 2016 .
  4. ^ "Registro de cambios de Ruby 1.9.1". Archivado desde el original el 17 de enero de 2022.
  5. ^ ab "Historial de versiones de RubyGems". GitHub . Consultado el 18 de septiembre de 2016 .
  6. ^ "Ya se lanzó Ruby 1.9.1". www.ruby-lang.org . Consultado el 18 de septiembre de 2016 .
  7. ^ "¿Qué es una gema? - RubyGems.org". guides.rubygems.org . Consultado el 18 de septiembre de 2016 .
  8. ^ "Seguridad - Guías de RubyGems". guides.rubygems.org . Consultado el 23 de septiembre de 2016 .

Enlaces externos