RubyGems - RubyGems
Стабильный выпуск | 3.2.20 / 11 июня 2021 г .
|
---|---|
Репозиторий | |
Написано в | Рубин |
Операционная система | Кроссплатформенность |
Тип | Менеджер пакетов |
Лицензия | Рубиновая лицензия |
Интернет сайт | rubygems |
Всего драгоценных камней | 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, разработанном для конкретной платформы, в зависимости от архитектуры процессора, типа и версии операционной системы.
Каждый камень состоит из:
- Код
- Документация
- Спецификация драгоценных камней (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.