RubyGems - RubyGems

RubyGems
Стабильный выпуск
3.2.20 / 11 июня 2021 г . ; 2 месяца назад ( 11 июня 2021 г. )
Репозиторий Отредактируйте это в Викиданных
Написано в Рубин
Операционная система Кроссплатформенность
Тип Менеджер пакетов
Лицензия Рубиновая лицензия
Интернет сайт rubygems .org
Всего драгоценных камней 133 000+
Всего скачиваний 14+ миллиардов

RubyGems - это менеджер пакетов для языка программирования Ruby, который предоставляет стандартный формат для распространения программ и библиотек Ruby (в автономном формате, называемом «жемчужиной»), инструмент, предназначенный для простого управления установкой гемов, и сервер для распространяя их. Он был создан Чадом Фаулером , Джимом Вейрихом , Дэвидом Аланом Блэком , Полом Браннаном и Ричардом Килмером во время RubyConf 2004.

Интерфейс для RubyGems представляет собой инструмент командной строки под названием gem, который может устанавливать библиотеки (гемы) и управлять ими. RubyGems интегрируется с загрузчиком времени выполнения Ruby, чтобы помочь найти и загрузить установленные драгоценные камни из стандартных библиотечных папок. Хотя можно использовать частный репозиторий RubyGems , публичный репозиторий чаще всего используется для управления гемами.

Публичный репозиторий помогает пользователям находить драгоценные камни, разрешать зависимости и устанавливать их. RubyGems входит в стандартный пакет Ruby начиная с Ruby 1.9.

История

Разработка RubyGems началась в ноябре 2003 года и была выпущена для общественности 14 марта 2004 года, или в День Пи 2004 года. В 2010 году публичный репозиторий по умолчанию для драгоценных камней был перемещен с gems.rubyforge.org на rubygems.org, который все еще используется. . Кроме того, разработка RubyGems была перенесена на GitHub в 2010 году. Хотя RubyGems существует с Ruby 1.8, он не был частью стандартного дистрибутива Ruby до Ruby 1.9.

Раньше совместимость с RubyGems и Ruby была разной. Многие версии RubyGems почти полностью несовместимы со многими версиями Ruby, а в некоторых версиях были недоступны ключевые функции. Например, Ruby 1.9 поставлялся с RubyGems 1.3.7 в своем стандартном дистрибутиве, но RubyGems 1.4.x не был совместим с Ruby 1.9. Это означало, что обновление RubyGems на Ruby 1.9 было невозможно до выпуска RubyGems 1.5.0 в 2011 году, через два года после первого стабильного выпуска Ruby 1.9. Эти проблемы совместимости привели к быстрой разработке RubyGems с переходом на 4–6-недельный график выпуска. Это отражено в 38 выпусках с 2004 по 2010 год и 117 выпусках с 2011 по 2016 годы. В 2013 году было выпущено 45 версий, что является самым большим количеством выпусков для RubyGems за год.

Структура драгоценного камня

Каждый драгоценный камень содержит название, версию и платформу. Драгоценные камни работают только на ruby, разработанном для конкретной платформы, в зависимости от архитектуры процессора, типа и версии операционной системы.

Каждый камень состоит из:

  1. Код
  2. Документация
  3. Спецификация драгоценных камней (Gemspec)

Организация кода для драгоценного камня с именем gem_name соответствует следующей структуре :

gem_name/
├── bin/
│   └── gem_name
├── lib/
│   └── gem_name.rb
├── test/
│   └── test_gem_name.rb
├── README
├── Rakefile
└── gem_name.gemspec
  • Каталог lib содержит код для драгоценного камня.
  • Каталог test (или spec) используется для тестирования.
  • Rakefile используется Rake для автоматизации тестов и генерации кода.
  • README включает документацию RDOC для большинства драгоценных камней.
  • Спецификация драгоценного камня (gemspec) содержит информацию об авторе драгоценного камня, времени создания и цели, которой служит драгоценный камень.

Проблемы безопасности

Поскольку драгоценные камни ruby ​​запускают собственный код в приложении, это может привести к различным проблемам с безопасностью из-за установки вредоносных драгоценных камней. Создатель вредоносных гемов может скомпрометировать пользовательскую систему или сервер.

Для противодействия угрозе безопасности разработан ряд методов:

  • Криптографическая подпись драгоценных камней, начиная с версии RubyGems 0.8.11. Для этого используются команды gem cert и gem install.
  • Были предложены новые модели подписи, такие как X509 и OpenPGP , которые активно обсуждаются экспертами по Ruby.

Смотрите также

использованная литература

внешние ссылки