CoderCastrov logo
CoderCastrov
Парсер

Как создать Ruby-гем, который предоставляет интерфейс командной строки (CLI) для внешнего источника данных

Как создать Ruby-гем, который предоставляет интерфейс командной строки (CLI) для внешнего источника данных
просмотров
6 мин чтение
#Парсер

В этом посте предоставлена информация о:

_· _Интерфейсе командной строки_: (Более подробно: _1_ / _2)

_· _Ruby-гемах

_· _Bundler

_· _Парсинге веб-страниц с помощью Nokogiri_: (Более подробно: _1_ / _2_ / _3_ / _4)

_· _Gemspec_: (Более подробно: _1)

_· _Локальном выполнении Ruby-гема

_· _Публикации Ruby-гема


Обзор: В этом посте описывается, как создать и опубликовать Ruby-гем для разбора веб-страницы и предоставления пользователю извлеченных данных через интерфейс командной строки.


Интерфейс командной строки

Интерфейс командной строки (CLI) предоставляет пользователю возможность выполнять действия в программном приложении. В отличие от графического пользовательского интерфейса (GUI), который в основном использует графические изображения, пользователи CLI вводят текстовые команды в командную строку.

Пример приложения, которое мы создадим в этой статье, предоставит командную строку, позволяющую пользователю взаимодействовать с программой, вводя команды и получая ответы программы таким же образом.


Ruby Gems

Шаг 1: Создание гема

Для начала мы создадим гем. Создав гем, мы сможем управлять, устанавливать и делиться приложением с другими пользователями или использовать его в других библиотеках или приложениях, подключив гем.

Ruby gems упаковывают вместе Ruby-код. Многие программы, которыми мы пользуемся каждый день, полагаются на полезные библиотеки, которые можно найти в сообществе Rubygems. Любой может легко искать, устанавливать или делиться Ruby-гемом с сообществом Rubygems.

Ruby-гемы обычно содержат одну и ту же стандартную структуру организации кода. Основные компоненты гема включают:

· Код - обычно находится в папке lib

· Документация - обычно файл README с инструкциями по установке

· Gemspec - обычно содержит информацию о файлах гема, информацию о тестировании, платформу, номер версии и многое другое, а также электронную почту и имя автора


Bundler

Шаг 2: Создание структуры файлов для гема

Bundler - это инструмент для создания основных компонентов гема. Чтобы создать гем с использованием Bundler, перейдите в папку вашего приложения. Затем введите следующую команду в командной строке (CLI):

bundle gem <имя вашего нового приложения>

Пример:

bundle gem my_new_program

Эта команда создаст структуру файлов для вашего нового гема и инициализирует репозиторий Git, если Git установлен. Если вы впервые используете Bundler, вам будет предложено включить файлы CODE_OF_CONDUCT.md и LICENSE.txt в ваш проект.

Вывод CLI для вашего проекта будет похож на следующий:

MIT License включена в конфигурацию Правила поведения включены в конфигурацию create <имя вашего нового приложения>/Gemfile create <имя вашего нового приложения>/lib/nonono.rb create <имя вашего нового приложения>/lib/nonono/version.rb create <имя вашего нового приложения>/nonono.gemspec create <имя вашего нового приложения>/Rakefile create <имя вашего нового приложения>/README.md create <имя вашего нового приложения>/bin/console create <имя вашего нового приложения>/bin/setup create <имя вашего нового приложения>/.gitignore create <имя вашего нового приложения>/LICENSE.txt create <имя вашего нового приложения>/CODE_OF_CONDUCT.md Инициализация репозитория Git в <местоположение вашей новой папки приложения> Гем ‘<имя вашего нового приложения>’ был успешно создан. Для получения дополнительной информации о создании RubyGem посетите https://bundler.io/guides/creating_gem.html

Структура файлов, предоставленная Bundler, предоставляет необходимые каталоги для начала процесса разработки кода для вашего приложения. При увеличении сложности вашего приложения могут потребоваться дополнительные файлы.

Веб-парсинг с использованием Nokogiri

Шаг 3: Сбор данных из внешнего источника

Для этого примера мы будем использовать Nokogiri для разбора данных с веб-страницы в формате HTML. Nokogiri - это гем, который ищет документы с помощью XPath или селекторов CSS3. Чтобы установить Nokogiri, введите следующую команду в командной строке:

gem install nokogiri

Чтобы использовать гем Nokogiri в вашем приложении, нам нужно его подключить. Метод require импортирует определения классов и методов из подключаемого файла гема, чтобы выполнить все его операторы в вашем приложении. Чтобы подключить Nokogiri в вашем приложении, добавьте следующую строку в файл кода, в котором вы хотите использовать гем:

require ‘nokogiri’

Перейдите к файлу gemspec вашего приложения и добавьте следующую строку в зависимость:

spec.add_dependency “nokogiri”

Nokogiri - это большая библиотека и имеет множество применений. Мы используем Nokogiri для разбора селекторов CSS и возврата данных с внешней веб-страницы. Чтобы открыть веб-страницу, как если бы это был файл, мы будем использовать обертку OpenURI. Чтобы подключить OpenURI в вашем приложении, добавьте следующую строку в файл кода, в котором вы хотите использовать гем:

require ‘open-uri’

Затем мы получим и разберем HTML. Добавьте следующую строку в файл кода:

<любая переменная> = Nokogiri::HTML(open(<любая веб-страница>))

Пример:

doc = Nokogiri::HTML(open('https://nokogiri.org/tutorials/installing_nokogiri.html'))

Это откроет веб-страницу в формате HTML и предоставит доступ к разбору селекторов CSS. Извлечение данных из веб-элементов называется парсингом. Затем мы будем парсить данные, используя селекторы CSS. Умение выбирать элементы с помощью CSS - отличное навык, который стоит развивать, узнайте больше здесь.

Возможно, потребуется перебирать селекторы CSS, чтобы получить все данные. Парсите и выводите HTML с помощью CSS, добавив следующую строку в файл кода:

<переменная для получения>.css(‘Селектор CSS’).each do |<переменная итерации>|

puts <переменная итерации>.text

end

Пример:

doc.css('nav ul.menu li a', 'article h2').each do |link|

puts link.content

end

Это вернет текст, найденный с помощью селектора CSS. Возможно, вам понадобится использовать другие методы или регулярные выражения, чтобы получить данные, которые вы хотите парсить.


Gemspec

Шаг 4: Создание gemspec файла

Файл gemspec определяет содержимое гема, его создателя и версию. Он также содержит всю информацию, необходимую для публикации гема в сообществе Rubygems. Большая часть компонентов gemspec уже заполнена, когда вы создаете базовую структуру файлов с помощью Bundler.

После заполнения gemspec вы можете запустить гем локально для тестирования или опубликовать его, чтобы поделиться им с сообществом Rubygems. Некоторые важные поля для заполнения:

· spec.summary — краткое описание гема

· spec.description — более подробное описание гема

· spec.homepage — URL домашней страницы гема

· spec.executables — исполняемые Ruby файлы, которые будут запускаться гемом

· spec.require_paths — пути в геме, которые будут добавлены в $LOAD_PATH при активации гема

· spec.add_development_dependency — добавляет зависимость для разработки с указанными требованиями. Зависимости для разработки не устанавливаются по умолчанию и не активируются при подключении гема.

· spec.add_dependency — зависимости, необходимые для работы гема

После заполнения gemspec вы можете сгенерировать файл gemspec. Для этого введите следующую команду в командной строке:

gem build <имя вашего нового приложения>.gemspec

Пример:

gem build my_new_program

Результатом выполнения этой команды будет создание гема и файла gemspec, который будет содержать номер версии в имени файла и будет похож на следующий:

Успешно создан RubyGem

Имя: my_new_program

Версия: 0.0.0

Файл: my_new_program -0.0.0.gem


Локальное выполнение Ruby-гема

Шаг 5: Запуск и тестирование вашего приложения локально

После того, как вы завершили написание кода приложения и создали файл гема, вы можете запустить гем локально для тестирования или использования его в другом приложении. Чтобы установить гем локально, введите следующую команду в командной строке:

gem install <имя вашего нового приложения>.gemspec

Пример:

gem install my_new_program.gemspec

Вывод для этой команды будет похож на следующий:

Успешно установлен гем my_new_program-0.0.0

1 гем установлен

Установка документации ri для my_new_program-0.0.0…

Установка документации RDoc для my_new_program0.0.0…

Гем теперь установлен на вашей локальной системе. Чтобы использовать гем, последний шаг - подключить гем и запустить его в сеансе irb. Для этого выполните следующие шаги:

1) откройте командную строку и запустите новый сеанс irb

2) введите следующую команду в сеансе irb:

require ‘<имя вашего нового приложения>

Пример:

require ‘my_new_program’

3) выполните приложение на основе вашего кода - это может быть сделано путем создания нового экземпляра, выполнения файла, размещенного в каталоге bin, выполнения файла с шебангом и т. д.

Публикация Ruby Gems

Шаг 6: Поделиться вашим приложением

Когда вы закончили разработку вашего приложения и протестировали его локально, вы готовы поделиться им с сообществом Rubygems. Чтобы поделиться вашей гемой, вам нужно создать аккаунт или войти, указав адрес электронной почты, имя пользователя и пароль.

Чтобы опубликовать вашу гему, введите следующую команду в командной строке (CLI):

gem push <имя вашего нового приложения>-<версия>.gem

Пример:

gem push my_new_program-0.1.1.gem

Вывод этой команды отправит гему на RubyGems.org и будет похож на следующий:

Отправка гемы на RubyGems.org...

Успешно зарегистрирована гема: my_new_program (0.1.0)

Вашу гему теперь можно найти, выполнив поиск в сообществе Rubygems, установить и использовать Ruby-пользователями по всему миру.