В разработке есть устойчивые принципы, которые действуют для всех языков программирования. Один из них — DRY, Don’t repeat yourself — «Не повторяйся», то есть избегай повторов в коде и логике работы, а вместо этого используй что есть. И существует целая среда, в которой этот принцип возведён в абсолют — это Ruby on Rails. О ней сегодня.
Что такое Ruby on Rails
Ruby on Rails, или просто Rails, — это фреймворк для создания веб-страниц и приложений, то есть готовая платформа, в которой есть инструменты, структура, модули и библиотеки для быстрой разработки.
Фреймворк Rails предназначен для программирования на объектно-ориентированном языке Ruby. В его основе лежит идея «потребности человека выше компьютерных», поэтому Ruby — это простой в использовании язык сценариев. В продолжение этой философии Rails создан таким образом, чтобы сделать процесс разработки как можно проще. Это достигается за счёт двух принципов философии Rails.
1. DRY, или «не повторяйся», о котором мы говорили в самом начале. Его соблюдение состоит в том, что Rails обрабатывает общий для всех приложений повторяющийся код и позволяет писать меньше кода. Вот как это выглядит на практике:
- для возможности повторного использования и поддержания работоспособности контроллеров мы создаём сервисы — они решают конкретную задачу и предоставляют конечный ответ контроллерам;
- чтобы модели оставались пригодными для повторного использования, мы создаём консёрны — расширения стандартных модулей;
- функции мы пишем так, чтобы их можно было использовать в нескольких местах;
- мы создаём общий контроллер, который наследует свойства от контроллера действий и наследуется другими контроллерами.
Поскольку мы не пишем одну и ту же информацию снова и снова, наш код на Ruby on Rails получается удобнее в сопровождении, более масштабируемым и содержит меньше ошибок.
2. «Соглашение важнее конфигурации». Этот принцип состоит в том, что при разработке нужно следовать соглашениям, которые определены инфраструктурой, а не менять конфигурацию платформы по-своему. Вот как это выглядит на практике:
- если у нас есть таблица с названием user, мы создаём файл модели под названием user.rb в папке моделей;
- если запрос поступает к пользовательскому контроллеру и функции индексирования, то файл представления будет находиться в папке views → users под названием index.html.erb или index.html.haml.
Зачем это нужно и где используется
Ruby on Rails — полноценный фулстек-фреймворк, его можно использовать как для разработки серверной части, так и для создания интерфейсов. Для серверных компонентов в нём есть модели, контроллеры и маршрутизация, а также инструменты для работы с базами данных и обработки запросов от клиентской части. Для интерфейсов в Rails есть представления и шаблоны. Например, одно из самых частых применений фреймворка — авторизация и аутентификация пользователя, когда нужно понять, пускать посетителя в закрытую часть сайта или нет.
Rails используют для разработки в таких сферах:
- интернет-магазины — в нём есть инструменты для электронной коммерции, включая обработку заказов, платежей, управления каталогами и интеграции с платёжными системами;
- социальные сети и платформы обмена контентом, например фотографиями, музыкой и видео;
- системы управления проектами и задачами, где можно создавать задачи, делиться файлами, общаться и отслеживать прогресс проекта;
- сервисы бронирования и аренды жилья, автомобилей, билетов и так далее;
- платформы для обучения и онлайн-курсов;
- порталы новостей и блоги онлайн-изданий, в которых публикуется большое количество контента.
На Ruby on Rails создано множество сайтов и приложений, например AirBnB, Twitch, Basecamp, GitHub, SoundCloud, Ask.fm, Kickstarter и Bloomberg.
Как работает Ruby on Rails
Принцип работы Ruby on Rails основан на архитектуре MVC — Model-View-Controller («Модель — Представление — Контроллер»). Чтобы объяснить эту архитектуру, представим интернет-магазин, в котором есть какие-то товары.
Модель — шаблоны данных, которые будут использованы на сайте или в приложении. В интернет-магазине это код ресурса или объекта, например товара. Модели в Rails — это специальные классы, которые наследуют методы от ActiveRecord::Base. Это такой модуль, который преобразует объекты в реляционную базу данных, например MySQL или PostgreSQL. За счёт этого Rails позволяет легко создавать, читать, обновлять и удалять объекты. Например:
#создаём новый магазин
store = Store.new
#задаём имя магазина
store.name = "Лучшая покупка"
#добавляем описание магазина
store.description = "Магазин электроники..."
#сохраняем магазин
store.save
#находим объект модели и сохраняем его в переменную
s = Store.find_by_name("Лучшая покупка")
#выводим название магазина
s.name
#добавляем описание переменной
s.description = "Выставочный зал для Amazon.com"
#обновляем наш магазин в базе данных
s.save
#удаляем объект из базы данных
s.destroy
Rails предоставляет нам простой способ настроить нашу таблицу базы данных с помощью кода Ruby, чтобы у нас не было необходимости самим писать стандартный язык запросов. Модель является местом, где мы сохраняем данные в нашу базу, пишем собственные методы, области видимости и так далее.
Представление — это код, который подготавливает что-то, что будет отправлено в браузер пользователя, отправивший запрос. Для этого у нас будет файл show.html.erb с примерно таким содержанием:
<!-- отображение товара --!>
<div class="product_show">
<!-- отображение названия товара --!>
<span><%= @product.name %></span>
<!-- отображение описания товара --!>
<span><%= @product.description %></span>
</div>
Обычно это действие отображается внутри какого-то другого файла *.html.erb, который называется макетом и содержит все высокоуровневые элементы в верхних и нижних колонтитулах каждой страницы, на панелях навигации и так далее.
Контроллер — это элемент, который содержит бизнес-логику, центральная единица, которая связывает модели и представления, полагаясь при этом на методы модели. Если мы направим запрос вида /products/4
контроллеру products
, то внутри этого контроллера будет метод, чтобы что-то сделать с этим идентификационным номером:
#определяем класс ProductsController как подкласс ApplicationController
class ProductsController < ApplicationController
#определяем внутри класса ProductsController метод отображения товара по идентификатору
def show
@product = Product.find_by_id(params[:id])
end
end
Поток запросов и ответов в архитектуре MVC будет выглядеть так:
- Клиент отправляет запрос веб-серверу.
- Сервер принимает запрос от компонента контроллера.
- Запрос оценивается и пересылается по нужному маршруту. Маршрут интерпретирует запрос и сопоставляет его с методом контроллера.
- Контроллер использует модель для доступа к данным из БД, обращаясь с ними согласно требованиям бизнес-логики.
- После проверки контроллер упорядочивает данные для представления.
- Контроллер отправляется в представление для отображения в index.html.
- Получив данные, представление создаёт ответ для отправки обратно на веб-сервер.
- Этот HTTP-ответ возвращается клиенту вместе с данными JSON.
Плюсы Ruby on Rails
Хотя фреймворк Ruby on Rails существует довольно давно, он всё ещё популярен и используется для разработки по многим причинам:
- он идеален для начинающих программистов;
- для работы требуется минимум ресурсов;
- это последовательный и хорошо написанный код без посторонних элементов, которые иногда встречаются в других языках;
- он поддерживает масштабирование при небольших бюджетах;
- его принципы и встроенные плагины сокращают время разработки;
- прототип можно создать быстрее, чем с помощью других языков и фреймворков;
- он обеспечивает простое тестирование;
- у него большое сообщество энтузиастов, которые вносят свой вклад в среду Rails.
С чего начать
Для работы с Ruby on Rails потребуется несколько программ и инструментов:
- Язык программирования Ruby — его нужно скачать с официального сайта и установить на компьютер.
- RubyGems — пакетный менеджер для Ruby, с помощью которого можно устанавливать и управлять библиотеками и фреймворками. Обычно RubyGems устанавливается вместе с Ruby.
- Rails — установить фреймворк можно через командную строку с помощью такой команды:
gem install rails
- Система управления базами данных, например MySQL, PostgreSQL, SQLite и так далее. Установка и настройка СУБД нужна для проектов Rails.
У нас есть несколько статей о базах данных и системах управления ими, почитайте, если интересно:
Изучить Ruby on Rails на русском:
- онлайн-курс ru.hexlet.io/courses/ruby-on-rails;
- учебник rubyrush.ru/study/rails;
- примеры и задачи www.railstutorial.org/book/ru;
- сообщество разработчиков rusrails.ru/;
- форум www.ruby-forum.com/;
- блог со статьями и руководствами rubygarage.org/blog.
Ресурсы на английском языке:
- официальная документация guides.rubyonrails.org/;
- официальный репозиторий github.com/rails/rails.
Что дальше
В следующей статье мы рассмотрим синтаксис и основные конструкции Ruby on Rails. Подпишитесь, чтобы не пропустить продолжение.