Публикация в RubyGems
Выпускайте свой gem
«Публикация в RubyGems» — бесплатный урок Ruby Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Что такое RubyGems.org?
RubyGems.org — это общедоступный сайт, где публикуются и скачиваются гемы Ruby. Когда Вы выполняете gem install или bundle install, пакеты по умолчанию загружаются оттуда.
- Публикация делает гем доступным для установки по всему миру.
- Имя каждого гема уникально, и право занять его получает первый зарегистрировавший имя.
- После публикации версию следует считать неизменяемой.
Создание учётной записи
Перед публикацией Вам нужна бесплатная учётная запись RubyGems.org. Затем войдите в систему из командной строки, чтобы инструмент gem мог аутентифицировать загружаемые Вами пакеты. Учётные данные сохраняются локально для будущих публикаций.
Предрелизный контрольный список
Перед выпуском убедитесь в следующем:
- Номер версии увеличен.
- Тесты проходят.
- Журнал изменений обновлён.
- Спецификация гема содержит все файлы и правильную лицензию.
Несколько минут проверки предотвращают неудачный публичный выпуск.
checklist = ["version bumped", "tests pass", "changelog updated", "gemspec valid"]
checklist.each { |item| puts "[ ] " + item }Сборка пакета
Выполните gem build mygem.gemspec. Эта команда считывает gemspec и создаёт файл вроде mygem-0.1.0.gem, содержащий ваш код и метаданные. Именно этот артефакт загружается.
Локальная проверка сборки
Установите собранный файл в чистое окружение с помощью gem install ./mygem-0.1.0.gem и попробуйте подключить его. Это позволяет обнаружить отсутствующие файлы или ошибки загрузки до того, как их увидят пользователи.
Публикация в RubyGems
Опубликуйте пакет с помощью gem push mygem-0.1.0.gem. Через несколько мгновений версия появится на RubyGems.org, и любой пользователь сможет её установить. Для авторизации загрузки команда использует сохранённые учётные данные.
Выпуск с помощью Rake
Пакеты, созданные Bundler, содержат задачу rake release. Она создаёт тег версии в Git, собирает пакет и отправляет его одной командой, поэтому тег Git и опубликованная версия всегда совпадают.
Повторно опубликовать версию невозможно
После публикации 1.0.0 нельзя заменить её другим кодом. Чтобы исправить проблему, необходимо опубликовать новую версию, например 1.0.1. Благодаря этому определённая версия всегда состоит из одних и тех же байтов для всех пользователей.
published = "1.0.0"
fix = "1.0.1"
puts "Cannot overwrite " + published
puts "Publish " + fix + " instead"Удаление неудачного выпуска
Если версия содержит ошибки или небезопасна, команда gem yank mygem -v 1.0.1 удаляет её из списка версий для новых установок. Существующие файлы блокировки всё ещё могут ссылаться на неё, поэтому удаление — это крайняя мера, а не кнопка отмены.
Защита учётной записи
Защитите свой пакет от захвата:
- Включите многофакторную аутентификацию на RubyGems.org.
- Используйте ключи API с ограниченными разрешениями.
- Добавьте доверенных совладельцев с помощью
gem owner, чтобы пакет продолжал поддерживаться, если Вы отойдёте от проекта.
После публикации
После публикации добавьте инструкции по установке в README, объявите о выпуске и следите за проблемами. Отвечайте на сообщения об ошибках выпусками с исправлениями. Поддерживаемый пакет со временем завоёвывает доверие и получает всё больше пользователей.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли процесс публикации.
Итоги: публикация в RubyGems
Вы изучили процесс выпуска:
- Создайте учётную запись и войдите в систему.
- Выполните предварительную проверку, затем запустите
gem build. - Проверьте пакет локально, затем выполните
gem pushилиrake release. - Версии неизменяемы: публикуйте исправления как новые версии или используйте
gem yank. - Защитите учётную запись с помощью MFA и совладельцев.
На этом курс «Создание собственного Ruby-пакета» завершён.
Часто задаваемые вопросы
Урок «Публикация в RubyGems» бесплатный?
Да — полный текст урока «Публикация в RubyGems» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «Публикация в RubyGems»?
Выпускайте свой gem Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Публикация в RubyGems»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Структура gem
- Написание кода
- Тестирование и версионирование
- Публикация в RubyGems