В предыдущей статье мы написали небольшой гем для вычисления чисел Фибоначчи. В этой статье мы дработаем его в CLI приложение, немного доработаем исходный код, чтобы ускорить подсчет чисел Фибоначчи и опубликуем все это дело на rubygems.
Для начала в корневой папке гема создадим новую папку. Назовем её exe. В этой папке создадим файл для вызова из консоли, обычно имя файла совпадает с именем гема.
Предоставим этому файлу права на исполнение, чтобы мы смогли запускать его:
chmod +x exe/fib
В файле описываем что должно происходить при вызове нашей утилиты:
Дальше собираем гем командой:
rake install
Теперь, когда гем собран и установлен в систему, перезапустим терминал и попробуем запустить утилиту:
Теперь допишем пару тестов, в ходе тестирования выяснилось, что в CLI режиме результат возвращается в виде строки с символом переноса строки, поэтому тест выглядит так:
Запустим тесты, убедимся, что все работает:
Рекурсия это, конечно, хорошо, но в нашем алгоритме есть как минимум две проблемы. Во-первых, мы рискуем получить ошибку переполнения стека вызовов, во-вторых , мы расходуем больше памяти и увеличиваем время выполнения нашей программы. Давайте доработаем алгоритм и убедимся, что логика не изменилась, что все тесты выполняются успешно.
Регистрация на rubygems
Переходим на страницу регистрации, вводим учетные данные, жмём “Sign up” и готово!
Подготовка к публикации
Перед публикацией гема необходимо внести пару правок в файле fib.gemspec:
1. Необходимо проверить, существует ли гем с таким же именем, как у вашего. Если да, то вы не сможете опубликовать свой, пока не измените его имя в параметре spec.name
2. В файле спецификации существует заглушка, которая не позволит опубликовать гем в каким-либо репозитории.
Необходимо указать доменное имя нужного репозитория, либо удалить этот блок кода для публикации в различных репозиториях.
Гем с именем fib занят, поэтому я переименовал его в fib_test, чтобы все понимали, что это тестовый/учебный гем, и устанавливать его не стоит
Публикация гема
Сначала необходимо собрать гем с обновленной спецификацией, делаем это командой rake build
rake build
# => fib_test 0.2.0 built to pkg/fib_test-0.2.0.gem.
Дальше командой gem push мы опубликуем его на rubygems.
Во время выполнения надо будет ввести почту и пароль, указанную при регистрации
Теперь гем доступен по ссылке: https://rubygems.org/gems/fib_test