RubyGems es un administrador 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 administrar fácilmente la instalación de gemas y un servidor para distribuyéndolos. Fue creado por Chad Fowler , Jim Weirich , David Alan Black , Paul Brannan y Richard Kilmer durante RubyConf 2004. [2]
Lanzamiento estable | 3.2.20 [1] / 11 de junio de 2021 |
---|---|
Repositorio | ![]() |
Escrito en | Rubí |
Sistema operativo | Multiplataforma |
Tipo | Gerente de empaquetación |
Licencia | Licencia Ruby |
Sitio web | rubygems |
Gemas totales | 133.000+ |
---|---|
Descargas totales | 14+ mil millones |
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 se utiliza más comúnmente para la gestión de gemas.
El repositorio público ayuda a los usuarios a encontrar gemas, resolver dependencias e instalarlas. RubyGems se incluye con el paquete estándar de Ruby 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 Día Pi 2004. [5] En 2010, el repositorio público predeterminado de gemas se trasladó de gems.rubyforge.org a rubygems.org, que es todavia en uso. Además, el desarrollo de RubyGems se trasladó a GitHub en 2010. Aunque RubyGems existe desde Ruby 1.8, no formaba 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 vino con RubyGems 1.3.7 en su distribución estándar, pero RubyGems 1.4.x no era compatible con Ruby 1.9. Esto significó que la actualización de RubyGems en Ruby 1.9 no fue 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 programa 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 el número más alto 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 solo en ruby diseñado para una plataforma particular basada en la arquitectura de la CPU y el tipo y versión del sistema operativo. [7]
Cada gema consta de:
- Código
- Documentación
- Especificación de gemas (Gemspec)
La organización del código sigue la siguiente estructura para una gema llamada gem_name :
gem_name /├── papelera /│ └── nombre_gema├── lib /│ └── gem_name.rb├── prueba /│ └── test_gem_name.rb├── LÉAME├── Rakefile└── gem_name.gemspec
- El directorio lib contiene el código de la gema.
- El directorio test (o spec) se utiliza para realizar pruebas.
- Rakefile es utilizado por Rake para automatizar pruebas y generar código.
- README incluye la documentación, RDOC , para la mayoría de las gemas.
- La especificación de gemas (gemspec) contiene información sobre el autor de la gema, el momento de creación y el propósito de la gema.
Preocupaciones de seguridad
Dado que las gemas de rubí ejecutan su propio código en una aplicación, puede dar lugar a varios problemas de seguridad debido a la instalación de gemas maliciosas. El creador de gemas maliciosas puede comprometer el sistema o servidor del usuario. [8]
Se han desarrollado varios métodos para contrarrestar la amenaza a la seguridad:
- Firma criptográfica de gemas desde RubyGems versión 0.8.11. Los comandos gem cert y gem install se utilizan para este propósito.
- Se han propuesto nuevos modelos de firma como X509 y OpenPGP y se están discutiendo activamente entre los expertos de Ruby.
Ver también
Referencias
- ^ "Versión 3.2.20" . 11 de junio de 2021 . Consultado el 21 de junio de 2021 .
- ^ "174 Rubygems con Eric Hodel" .
- ^ "Referencia de comandos de RubyGems" . guides.rubygems.org . Consultado el 18 de septiembre de 2016 .
- ^ "Registro de cambios de Ruby 1.9.1" .
- ^ a b "Historial de versiones de RubyGems" . GitHub . Consultado el 18 de septiembre de 2016 .
- ^ "Ruby 1.9.1 lanzado" . www.ruby-lang.org . Consultado el 18 de septiembre de 2016 .
- ^ "¿Qué es una joya? - RubyGems.org" . guides.rubygems.org . Consultado el 18 de septiembre de 2016 .
- ^ "Seguridad - Guías de RubyGems" . guides.rubygems.org . Consultado el 23 de septiembre de 2016 .
enlaces externos
- Página web oficial
- Artículo de Linux Journal