Репозитории формата RubyGems работают с клиентами gem и bundle.
В примерах используются условные имена rubygems-proxy и rubygems-hosted.
Подключение к proxy
Направьте Bundler на proxy-репозиторий зеркалом:
bundle config mirror.https://rubygems.org https://<GALLEON_HOST>/repository/rubygems-proxyУстановка одиночного гема — порядок флагов важен, --clear-sources должен идти до --source:
gem install colorize --clear-sources \
--source https://<USERNAME>:<PASSWORD>@<GALLEON_HOST>/repository/rubygems-proxyУстановка из hosted-репозитория
Гемы, опубликованные в hosted-репозитории, подключаются источником в Gemfile:
source "https://<GALLEON_HOST>/repository/rubygems-hosted" do
gem "foo"
endУчётные данные для Bundler задаются командой (работает и для зеркала из предыдущего раздела):
bundle config set --global <GALLEON_HOST> <USERNAME>:<PASSWORD>Публикация
Клиент gem передаёт значение ключа авторизации как есть,
поэтому в ~/.gem/credentials записывается готовая строка Basic <BASE64>
(файл должен иметь права 0600):
---
:galleon: Basic <BASE64>gem build foo.gemspec
gem push foo-1.0.0.gem --key galleon --host https://<GALLEON_HOST>/repository/rubygems-hostedОсобенности
Особенности формата:
- Опубликованные версии неизменяемы: повторная публикация той же версии отклоняется.
- Команда
gem yankне поддерживается — версия удаляется через веб-интерфейс кнопкой «Удалить компонент» (нужна привилегияdelete). - Разрешение зависимостей идёт по протоколу Compact Index; классические команды (
gem fetch,gem list --remote) тоже работают.