0Pricing
Ruby Academy · Урок

Структура 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 — локальная установка не требуется.

Все уроки этого курса

  1. Структура gem
  2. Написание кода
  3. Тестирование и версионирование
  4. Публикация в RubyGems
← Назад к Ruby Academy