
Вы любитель собак и ищете интересный способ узнать больше о своем любимом пушистом друге? Что ж, обратите внимание на DogFacts, новое приложение интерфейса командной строки (CLI) Ruby! С DogFacts вы можете получать новые факты о собаках каждый раз, когда запускаете эту программу!

В этой статье я проведу вас через процесс создания My ruby application (DogFacts) и объясню, как вы можете использовать те же методы для создания собственных CLI-приложений.
Знакомство с рубашкой…
Для начинающего программиста на Ruby создание DogFacts было увлекательным и сложным способом попрактиковаться в своих навыках. Я многое узнал о классах, методах Ruby и о том, как взаимодействовать с внешними API.
Итак, давайте погрузимся и узнаем, как создать интересное и полезное приложение CLI с помощью Ruby!
Итак, прежде всего: Окружающая среда. Чтобы создать приложение Ruby CLI, вам необходимо настроить среду. Это включает в себя настройку подключения к базе данных и загрузку необходимых гемов и файлов. Это будет скелет нашей программы:

Предполагая, что Ruby уже установлен на вашем компьютере, следующим шагом будет убедиться, что в ваш файл Gem добавлены соответствующие драгоценные камни.
# Gemfile # Gem source source "https://rubygems.org" # Specific Gems gem 'require_all' gem 'sqlite3' gem 'activerecord' gem 'colorize' gem "rake", "~> 13.0" gem 'pry'
Сейчас. Мы используем Activerecord без Rails, поэтому нам нужно добавить гем Rake, который мы будем использовать для создания и переноса нашей базы данных SQL. Мы также используем драгоценные камни colorize и pry для раскрашивания нашего текста в приложении CLI и отладки нашего приложения CLI соответственно.
Затем вам нужно создать новый файл, чтобы определить среду вашего приложения. Этот файл будет отвечать за установку соединения с базой данных и загрузку всех необходимых библиотек.
Чтобы создать файл среды, откройте новый файл в текстовом редакторе и сохраните его как config/environment.rb. В этом файле вы определите модуль, который будет отвечать за загрузку необходимых файлов и гемов. Вот пример того, как может выглядеть ваш файл environment.rb:
# config/environment.rb require 'bundler/setup' Bundler.require ActiveRecord::Base.establish_connection( :adapter => "sqlite3", :database => "db/database.db" ) ActiveRecord::Base.logger = nil require_all 'app'
Давайте разберем, что происходит в этом файле. Во-первых, мы используем Bundler для загрузки всех драгоценных камней, указанных в нашем файле Gemfile. Это гарантирует, что все необходимые библиотеки доступны для нашего приложения.
Далее мы устанавливаем соединение с базой данных с помощью ActiveRecord. В этом примере мы используем SQLite в качестве нашей базы данных, но вы можете использовать любую базу данных, которую поддерживает ActiveRecord.
Наконец, для нашего Rakefile советую зайти сюда и скопировать Rakefile, а также database.yml
После настройки среды мы готовы приступить к созданию нашего приложения Ruby CLI!
Следующим шагом в создании вашего приложения Ruby CLI будет создание ваших моделей ActiveRecord и миграций. Эти модели будут представлять таблицы в вашей базе данных и позволят вам взаимодействовать с данными.
Во-первых, это наши файлы миграции. Они будут выглядеть так:
# db/migrate/01_create_fact_table.rb
class CreateFactTable < ActiveRecord::Migration[5.2]
def change
create_table :facts do |r|
r.string :fact
end
end
end
# db/migrate/02_create_user_table.rb
class CreateUserTable < ActiveRecord::Migration[5.2]
def change
create_table :users do |r|
r.string :name
end
end
end
# db/migrate/03_create_favorites_table.rb
class CreateFavoritesTable < ActiveRecord::Migration[5.2]
def change
create_table :favorites do |r|
r.integer :user_id
r.integer :fact_id
end
end
end
Тогда наши модели:
# app/models/fact.rb
class Fact < ActiveRecord::Base
has_many :favorites
has_many :users, through: :favorites
end
# app/models/favouurite.rb
class Favorite < ActiveRecord::Base
belongs_to :user
belongs_to :fact
end
# app/models/user.rb
class User < ActiveRecord::Base
has_many :favorites
has_many :facts, through: :favorites
end
Теперь нам просто нужно ввести rake db:migrate в нашем терминале, чтобы инициализировать нашу пользовательскую команду rake. Следующим шагом будет определение пользовательского интерфейса и логики взаимодействия с пользователем.
LOGIC, API и пользовательский интерфейс.
Для этого проекта мы будем использовать Dog API и конкретно эту ссылку:
URL = “https://dog-api.kinduff.com/api/facts?number=5.json"
Он предоставляет нам ровно 5 случайных фактов для нашего пользователя на выбор. Они могут сохранить его в свой список «избранных» или удалить его оттуда.
Чтобы создать логику и пользовательский интерфейс для нашего приложения Ruby CLI, нам нужно подумать о том, какие действия может выполнять пользователь и как они будут взаимодействовать с нашим приложением.
Вот базовый пример моей логической структуры и пользовательского интерфейса для CLI-приложения DogFacts:
# app/app.rb
class App
def run
welcome
while (@exit != 'y')
login
see_favourite
browse
exit
end
puts "Got it! See ya!"
end
end
So,
В нашем методе run у нас есть несколько методов:
welcome: этот метод отображает приветствие и некоторую вводную информацию для пользователя.login: Этот метод вызывается внутри цикла while и отвечает за аутентификацию пользователя. Он предлагает пользователю ввести свое имя пользователя, а затем сверяет эти значения с базой данныхusers.see_favourite: Этот метод отвечает за отображение любых избранных фактов, сохраненных пользователем.browse: Этот метод отвечает за выборку API и позволяет пользователю просматривать различные факты, связанные с собаками.exit: Этот метод позволяет пользователю выйти из приложения.puts “Got it! See ya!”: это последнее сообщение, которое отображается пользователю после завершения цикла while.
Если вы хотите увидеть полный код и то, как я сделал геттер для файла app.rb, чтобы сделать мой код чище, вы можете посетить мой репозиторий GitHub здесь
Наконец, нам нужно иметь возможность вызывать и запускать программу с помощью терминала. Вы можете сделать это разными способами, но я создал файл console.rb, где я создал новый экземпляр App из нашего файла app.rb и объединил его с зависимостями среды.
# bin/console.rb require_relative '../config/environment' app = App.new app.run
Последнее, что осталось сделать, это вызвать этот файл в нашем терминале. Просто введите ruby bin/console.rb в терминале. Это запустит нашу программу.
Выполнив эти шаги, вы получите полнофункциональное приложение Ruby CLI, которое использует Active Record для взаимодействия с базой данных и предоставляет любителям собак удобный интерфейс для просмотра и сохранения своего любимого контента, связанного с собаками.
Приложив немного творческого подхода и некоторые дополнительные функции, это приложение можно настроить в соответствии с любым типом данных, что делает его ценным инструментом для управления и исследования данных.
Я надеюсь, что это руководство помогло вам начать работу с собственным приложением Ruby CLI и что вы сможете применять эти концепции в своих проектах в будущем.