Структура gem
Файлы и gemspec
«Структура gem» — бесплатный урок Ruby Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Что такое гем?
Гем — это упакованная библиотека или приложение Ruby, которое можно устанавливать, версионировать и распространять через RubyGems. Почти каждый используемый Вами инструмент Ruby является гемом.
- Гем объединяет код, метаданные и зависимости.
- Метаданные хранятся в файле спецификации гема.
- Такие инструменты, как
bundlerиgem, управляют гемами.
Создание каркаса
Быстрее всего начать с команды bundle gem mygem. Она создаёт стандартную структуру каталогов, спецификацию гема, папку для тестов, README и лицензию. Затем Вы заполняете каркас кодом.
Стандартная структура
Типичный гем с именем mygem выглядит так:
lib/mygem.rb— файл входа.lib/mygem/— дополнительные исходные файлы.lib/mygem/version.rb— константа версии.mygem.gemspec— метаданные.test/илиspec/— тесты.README.mdи файл лицензии.
Файл входа
lib/mygem.rb загружается, когда кто-то выполняет require 'mygem'. Обычно он подключает файл версии и остальную библиотеку, а также определяет модуль верхнего уровня.
module Mygem
def self.greet(name)
"Hello, " + name
end
end
puts Mygem.greet("world")Файл версии
Хранение версии в отдельном файле позволяет и спецификации гема, и коду читать её. По соглашению внутри модуля гема используется константа VERSION.
module Mygem
VERSION = "0.1.0"
end
puts "Current version: " + Mygem::VERSIONЧто такое спецификация гема?
Спецификация гема — это файл Ruby, описывающий гем: его имя, версию, автора, краткое описание, файлы и зависимости. RubyGems читает его, чтобы собрать и опубликовать пакет.
Это обычный код Ruby, поэтому в нём можно вычислять значения, но сам файл следует оставлять простым и декларативным.
Минимальная спецификация гема
Основные поля — имя, версия, авторы, краткое описание и файлы. Ниже показана структура, записанная в виде обычного кода Ruby, который можно поместить в mygem.gemspec.
require "ostruct"
spec = OpenStruct.new
spec.name = "mygem"
spec.version = "0.1.0"
spec.authors = ["Your Name"]
spec.summary = "A tiny example gem"
puts spec.name + " " + spec.versionПеречисление файлов
Спецификация гема должна указывать, какие файлы входят в гем. Во многих спецификациях гема у git запрашиваются отслеживаемые файлы, чтобы ничего не забыть:
spec.files = Dir['lib/**/*.rb'] + ['README.md']
В пакет попадают только перечисленные файлы, поэтому забытый файл приводит к неработающей установке.
Объявление зависимостей
В спецификацию гема добавляются два вида зависимостей:
add_dependency— зависимости, необходимые во время выполнения и устанавливаемые пользователями.add_development_dependency— инструменты, используемые только при разработке, например фреймворки для тестирования.
Используйте ограничения версий, например '~> 1.2', чтобы сохранять совместимость.
Требуемая версия Ruby
Укажите spec.required_ruby_version, чтобы пользователи со слишком старой версией Ruby получили понятную ошибку, а не столкнулись с непонятным сбоем. Также заполните homepage, license и metadata, чтобы гем выглядел профессионально.
required = ">= 3.0.0"
current = RUBY_VERSION
puts "Requires Ruby " + required
puts "Running Ruby " + currentСборка гема
Когда спецификация гема готова, команда gem build mygem.gemspec создаёт файл .gem. Вы можете установить его локально с помощью gem install ./mygem-0.1.0.gem, чтобы протестировать перед публикацией.
Быстрая проверка
Проверьте своё понимание структуры гема.
Итоги: структура гема
Вы узнали, как организуется гем:
bundle gemсоздаёт каркас структуры.lib/mygem.rbявляется точкой входа.- Версия хранится в отдельном файле.
- Спецификация гема содержит метаданные, файлы и зависимости.
gem buildупаковывает гем.
Далее мы организуем настоящий код внутри гема.
Часто задаваемые вопросы
Урок «Структура gem» бесплатный?
Да — полный текст урока «Структура gem» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «Структура gem»?
Файлы и gemspec Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Структура gem»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.