Вы любитель собак и ищете интересный способ узнать больше о своем любимом пушистом друге? Что ж, обратите внимание на 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 у нас есть несколько методов:

  1. welcome: этот метод отображает приветствие и некоторую вводную информацию для пользователя.
  2. login: Этот метод вызывается внутри цикла while и отвечает за аутентификацию пользователя. Он предлагает пользователю ввести свое имя пользователя, а затем сверяет эти значения с базой данных users.
  3. see_favourite: Этот метод отвечает за отображение любых избранных фактов, сохраненных пользователем.
  4. browse: Этот метод отвечает за выборку API и позволяет пользователю просматривать различные факты, связанные с собаками.
  5. exit: Этот метод позволяет пользователю выйти из приложения.
  6. 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 и что вы сможете применять эти концепции в своих проектах в будущем.