RubyGems - это менеджер пакетов для языка программирования Ruby, который предоставляет стандартный формат для распространения программ и библиотек Ruby (в автономном формате, называемом «гем»), инструмент, предназначенный для простого управления установкой гемов, и сервер для распространяя их. Он был создан Чадом Фаулером , Джимом Вейрихом , Дэвидом Аланом Блэком , Полом Браннаном и Ричардом Килмером во время RubyConf 2004. [2]
Стабильный выпуск | 3.2.17 [1] / 5 мая 2021 г . |
---|---|
Репозиторий | |
Написано в | Рубин |
Операционная система | Кроссплатформенность |
Тип | Менеджер пакетов |
Лицензия | Рубиновая лицензия |
Веб-сайт | rubygems |
Всего драгоценных камней | 133 000+ |
---|---|
Всего скачиваний | 14+ миллиардов |
Интерфейс для RubyGems представляет собой инструмент командной строки под названием gem, который может устанавливать библиотеки (гемы) и управлять ими. [3] RubyGems интегрируется с загрузчиком времени выполнения Ruby, чтобы помочь найти и загрузить установленные гемы из стандартных библиотечных папок. Хотя можно использовать частный репозиторий RubyGems , публичный репозиторий чаще всего используется для управления гемами.
Публичный репозиторий помогает пользователям находить драгоценные камни, разрешать зависимости и устанавливать их. RubyGems входит в стандартный пакет Ruby начиная с Ruby 1.9. [4]
История
Разработка RubyGems началась в ноябре 2003 года и была опубликована 14 марта 2004 года, или в День Пи 2004 года. [5] В 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. [6] Эти проблемы совместимости привели к быстрому развитию RubyGems, переходу на график выпуска релизов 4–6 недель. Это отражено в 38 выпусках с 2004 по 2010 год и 117 выпусках с 2011 по 2016 годы. В 2013 году было выпущено 45 версий, что является наибольшим количеством выпусков для RubyGems за год. [5]
Структура драгоценного камня
Каждый драгоценный камень содержит название, версию и платформу. Gems работает только с Ruby, разработанным для конкретной платформы, в зависимости от архитектуры процессора, типа и версии операционной системы. [7]
Каждый камень состоит из:
- Код
- Документация
- Спецификация драгоценных камней (Gemspec)
Организация кода для драгоценного камня с именем gem_name соответствует следующей структуре :
gem_name /├── корзина /│ └── gem_name├── lib /│ └── gem_name.rb├── тест /│ └── test_gem_name.rb├── README├── Rakefile└── gem_name.gemspec
- Каталог lib содержит код для драгоценного камня.
- Каталог test (или spec) используется для тестирования.
- Rakefile используется Rake для автоматизации тестов и генерации кода.
- README включает документацию RDOC для большинства драгоценных камней.
- Спецификация драгоценного камня (gemspec) содержит информацию об авторе драгоценного камня, времени создания и цели, которой служит драгоценный камень.
Проблемы безопасности
Поскольку драгоценные камни ruby запускают собственный код в приложении, это может привести к различным проблемам с безопасностью из-за установки вредоносных драгоценных камней. Создатель вредоносных гемов может скомпрометировать пользовательскую систему или сервер. [8]
Разработан ряд методов противодействия угрозе безопасности:
- Криптографическая подпись драгоценных камней, начиная с версии RubyGems 0.8.11. Для этого используются команды gem cert и gem install.
- Были предложены новые модели подписи, такие как X509 и OpenPGP , которые активно обсуждаются экспертами по Ruby.
Смотрите также
Рекомендации
- ^ "Выпуск 3.2.17" . 5 мая 2021 . Дата обращения 16 мая 2021 .
- ^ «174 Rubygems с Эриком Ходелом» .
- ^ «Справочник команд RubyGems» . guides.rubygems.org . Проверено 18 сентября 2016 .
- ^ «Список изменений Ruby 1.9.1» .
- ^ а б «История версий RubyGems» . GitHub . Проверено 18 сентября 2016 .
- ^ «Выпущен Ruby 1.9.1» . www.ruby-lang.org . Проверено 18 сентября 2016 .
- ^ «Что такое драгоценный камень? - RubyGems.org» . guides.rubygems.org . Проверено 18 сентября 2016 .
- ^ «Безопасность - Руководства по RubyGems» . guides.rubygems.org . Проверено 23 сентября 2016 .
Внешние ссылки
- Официальный веб-сайт
- Статья в Linux Journal