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