Данная статья рассчитана на тех, кому интересен язык Ruby, и хочется создать собственный Gem.
Условные обозначения:
• gem — гем
В данной статье мы создадим гем расчета чисел Фибоначчи.
Прежде всего необходимо установить bundler, он все подготовит для разработки собственного гема:
bash> gem install bundler
После установки вводим команду:
bundle gem <имя_разрабатываего_гема>
Для создания гема bundler предложит:
- выбрать инструмент для тестирования кода (rspec/minitest/none);
- выбрать тип распространения пакета (лицензия);
- создать пользовательское соглашение.
Рассмотрим созданный bandler’ом каркас поподробней:
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.
Дальше добавим в файл lib/fib.rb метод number, который принимает аргумент n (номер числа Фибоначчи). Запустим тесты командой rspec, тесты должны провалиться.
Теперь допишем реализацию метода number. Листинг fib.rb представлен ниже.
Если заново запустим тесты, то они должны быть успешно пройдены.
На данном этапе наш гем готов. Далее перейдем в корень папки и выполним следующую команду:
rake install
В результате гем будет собран и помещен в папку pkg. Он так же будет сразу установлен в систему.
Проверим работоспособность гема, запустим консоль руби: