Найти в Дзене
IDE Cat

Ruby — Разработка Gem’а

Данная статья рассчитана на тех, кому интересен язык Ruby, и хочется создать собственный Gem.

Условные обозначения:
• gem — гем

В данной статье мы создадим гем расчета чисел Фибоначчи.

Прежде всего необходимо установить bundler, он все подготовит для разработки собственного гема:

bash> gem install bundler

После установки вводим команду:

bundle gem <имя_разрабатываего_гема>

Для создания гема bundler предложит:

  • выбрать инструмент для тестирования кода (rspec/minitest/none);
  • выбрать тип распространения пакета (лицензия);
  • создать пользовательское соглашение.
Рис.1 Диалог создания гема
Рис.1 Диалог создания гема

Рассмотрим созданный bandler’ом каркас поподробней:

-2
bin/console — запуск ruby консоли с загруженным гемом fib;
bin/setup — описание необходимых действий и зависимостей для установки гема, в данном случае — bundle install;
lib/fib/version.rb — константа, описывающая версию гема;
lib/fib/fib.rb — основные функции гема;
spec/*_spec.rb — тесты;
spec/spec_helper.rb — набор функций, необходимый для запуска тестов;
.gitignore — сообщает git, какие файлы (или шаблоны) он должен игнорировать;
.rspec — файл конфигурации тестов rspec;
.travis.yml — файл конфигурации CI travis;
fib.gemspec — файл конфигурации/описания гема Fib;
Gemfile — файл зависимостей/подключения gem’ов;
LICENSE.txt — лицензия гема Fib;
Rakefile — предоставляет DSL для написания задач на ruby, которые можно запускать из командной строки;
README.md — файл readme в формате markdown.

Создадим репозиторий (на github, bitbucket и т.п.). Неважно где, он нам понадобится, чтобы указать домашнюю страницу в спецификации гема (fib.gemspec).

Теперь, когда bundler создал нам все необходимые файлы, заполняем информацию в файле спецификации fib.gemspec: указываем автора, его электронную почту, краткое и полное описание гема, домашнюю страницу.

spec.authors = [“IDE CAT”]
spec.email = [“ide_cat@yandex.ru”]
spec.summary = %q{This gem does calculate Fibonacci number}
spec.description = %q{Long description}
spec.homepage = “<ссылка_на_репозиторий>”

Давайте применим методологию TDD, при которой сначала пишется тест, а потом код. В папке spec генератором создан fib_spec.rb, в нем уже по умолчанию есть тест на проверку номера версии гема, добавим полезные для нас тесты: первое и второе числа Фибоначчи равны 1, третье равно 2, а двадцатое равно 6765.

-3

Дальше добавим в файл lib/fib.rb метод number, который принимает аргумент n (номер числа Фибоначчи). Запустим тесты командой rspec, тесты должны провалиться.

Рис. 2. Тесты завершены с ошибкой
Рис. 2. Тесты завершены с ошибкой

Теперь допишем реализацию метода number. Листинг fib.rb представлен ниже.

-5

Если заново запустим тесты, то они должны быть успешно пройдены.

Рис. 3. Успешно пройденные тесты
Рис. 3. Успешно пройденные тесты

На данном этапе наш гем готов. Далее перейдем в корень папки и выполним следующую команду:

rake install

В результате гем будет собран и помещен в папку pkg. Он так же будет сразу установлен в систему.

Проверим работоспособность гема, запустим консоль руби:

-7