Найти тему
IDE Cat

Ruby: CLI Gem, публикация на rubygems

Оглавление

В предыдущей статье мы написали небольшой гем для вычисления чисел Фибоначчи. В этой статье мы дработаем его в CLI приложение, немного доработаем исходный код, чтобы ускорить подсчет чисел Фибоначчи и опубликуем все это дело на rubygems.

Для начала в корневой папке гема создадим новую папку. Назовем её exe. В этой папке создадим файл для вызова из консоли, обычно имя файла совпадает с именем гема.

Предоставим этому файлу права на исполнение, чтобы мы смогли запускать его:

chmod +x exe/fib

В файле описываем что должно происходить при вызове нашей утилиты:

Дальше собираем гем командой:

rake install

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

Рис. 1. Использование гема в CLI режиме
Рис. 1. Использование гема в CLI режиме

Теперь допишем пару тестов, в ходе тестирования выяснилось, что в CLI режиме результат возвращается в виде строки с символом переноса строки, поэтому тест выглядит так:

-3

Запустим тесты, убедимся, что все работает:

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

Рекурсия это, конечно, хорошо, но в нашем алгоритме есть как минимум две проблемы. Во-первых, мы рискуем получить ошибку переполнения стека вызовов, во-вторых , мы расходуем больше памяти и увеличиваем время выполнения нашей программы. Давайте доработаем алгоритм и убедимся, что логика не изменилась, что все тесты выполняются успешно.

-5

Регистрация на rubygems

Переходим на страницу регистрации, вводим учетные данные, жмём “Sign up” и готово!

Рис. 3. Форма регистрации rubygems
Рис. 3. Форма регистрации rubygems

Подготовка к публикации

Перед публикацией гема необходимо внести пару правок в файле fib.gemspec:
1. Необходимо проверить, существует ли гем с таким же именем, как у вашего. Если да, то вы не сможете опубликовать свой, пока не измените его имя в параметре
spec.name

2. В файле спецификации существует заглушка, которая не позволит опубликовать гем в каким-либо репозитории.

Рис. 4. Заглушка на публикацию гема
Рис. 4. Заглушка на публикацию гема

Необходимо указать доменное имя нужного репозитория, либо удалить этот блок кода для публикации в различных репозиториях.

Гем с именем fib занят, поэтому я переименовал его в fib_test, чтобы все понимали, что это тестовый/учебный гем, и устанавливать его не стоит

Публикация гема

Сначала необходимо собрать гем с обновленной спецификацией, делаем это командой rake build

rake build
# => fib_test 0.2.0 built to pkg/fib_test-0.2.0.gem.

Дальше командой gem push мы опубликуем его на rubygems.

Во время выполнения надо будет ввести почту и пароль, указанную при регистрации

-8

Теперь гем доступен по ссылке: https://rubygems.org/gems/fib_test