1. Основы современного Rails: архитектура монолита и настройка окружения
Основы современного Rails: архитектура монолита и настройка окружения
Добро пожаловать в курс «Современная веб-разработка на Ruby on Rails: Hotwire и InertiaJS». Мы начинаем путешествие в мир одного из самых продуктивных и элегантных фреймворков современности. Возможно, вы слышали, что «Rails мёртв» или что будущее только за микросервисами. Однако реальность такова: Ruby on Rails переживает свой ренессанс. Концепция «The One Person Framework» (фреймворк для одного человека) позволяет небольшим командам создавать продукты, которые раньше требовали усилий целых отделов разработки.
В этой вводной статье мы разберем философию современного Rails, поймем, почему монолитная архитектура снова в моде, и подготовим наше рабочее место для создания мощных веб-приложений.
Философия Rails и Величественный Монолит
Ruby on Rails построен на двух фундаментальных принципах, которые отличают его от многих других инструментов:
Возвращение к монолиту
Долгое время индустрия двигалась в сторону разделения: отдельный API на бэкенде (Go, Node.js, Python) и отдельное SPA (Single Page Application) на фронтенде (React, Vue). Это отличный подход для гигантов вроде Google или Facebook, но для стартапов и среднего бизнеса он часто приносит избыточную сложность.
Современный Rails проповедует идею The Majestic Monolith (Величественный Монолит). Это архитектура, где весь код — от работы с базой данных до рендеринга HTML и управления JavaScript — живет в одном репозитории и развертывается как единое целое.
!Сравнение архитектуры Монолита и Микросервисов/SPA
Преимущества такого подхода:
* Скорость разработки: Не нужно синхронизировать API контракты между фронтендом и бэкендом. * Простота деплоя: Вы разворачиваете одно приложение, а не десять. * Целостность данных: Вся логика валидации и обработки данных находится в одном месте.
Именно здесь на сцену выходят технологии Hotwire и InertiaJS, которые мы будем изучать в этом курсе. Они позволяют создавать интерактивные интерфейсы, не разрывая связь с монолитом и не превращая приложение в сложный SPA.
Архитектура MVC в контексте Rails
Rails следует классическому паттерну MVC (Model-View-Controller), но со своими особенностями. Давайте разберем, как проходит жизненный цикл запроса в Rails-приложении.
GET /articles/1) и решает, какой контроллер должен его обработать.В современном Rails к этому добавляются фоновые задачи (Jobs), каналы реального времени (ActionCable) и компоненты фронтенда, но ядро остается неизменным.
Настройка окружения
Для комфортной разработки на Ruby on Rails вам потребуется Unix-подобная система (macOS или Linux). Если вы используете Windows, настоятельно рекомендуется использовать WSL2 (Windows Subsystem for Linux). Попытки нативной разработки на Windows часто приводят к проблемам с совместимостью гемов (библиотек).
Шаг 1: Установка Ruby
Никогда не используйте системный Ruby, предустановленный в вашей ОС. Используйте менеджер версий. Самые популярные:
* rbenv (рекомендуемый выбор за простоту) * RVM * asdf (универсальный менеджер для разных языков)
Пример установки Ruby 3.3.0 через rbenv:
Шаг 2: База данных
Rails по умолчанию поддерживает SQLite, но для серьезной разработки стандартом де-факто является PostgreSQL. Он надежен, мощен и используется в продакшене большинством Rails-проектов.
Убедитесь, что у вас установлен PostgreSQL и запущен сервер базы данных.
Шаг 3: Node.js и Yarn (Опционально, но полезно)
Хотя современный Rails (начиная с версии 7) позволяет обходиться без Node.js благодаря Import Maps, для использования InertiaJS или сложного бандлинга JS нам все же понадобятся Node.js и пакетный менеджер Yarn.
Шаг 4: Установка Rails
Когда Ruby установлен, установка самого фреймворка — это просто установка гема (пакета Ruby):
Проверим версию:
Создание первого приложения
Давайте создадим каркас нашего будущего приложения. Мы будем использовать PostgreSQL в качестве базы данных.
Эта команда создаст директорию my_course_app и сгенерирует полную структуру проекта. Давайте заглянем внутрь.
Структура каталогов
Rails создает много папок, но не пугайтесь. Вот самые важные на старте:
* app/ — Здесь живет ваш код.
* app/models — Модели (работа с БД).
* app/controllers — Контроллеры.
* app/views — HTML-шаблоны.
* app/javascript — Ваш JS код (точки входа).
* config/ — Настройки приложения.
* config/routes.rb — Маршрутизация (какой URL куда ведет).
* config/database.yml — Настройки подключения к БД.
* db/ — Схемы базы данных и миграции.
* Gemfile — Список библиотек (гемов), которые использует проект.
Запуск приложения
Перед первым запуском нужно создать базу данных (так как мы выбрали PostgreSQL):
Теперь запустим сервер. В современном Rails часто используется скрипт bin/dev, который запускает не только сервер Rails, но и сборщики CSS/JS (если они есть):
Если вы используете чистый Rails без сложных сборщиков, достаточно команды:
Откройте браузер по адресу http://localhost:3000. Вы должны увидеть приветственную страницу Rails.
Bundler и управление зависимостями
В корне проекта лежит файл Gemfile. Это манифест всех библиотек, необходимых вашему приложению. Ruby использует систему Bundler для управления ими.
Если вы видите в инструкции «добавьте гем kaminari», это значит, что нужно добавить строку gem "kaminari" в Gemfile и выполнить команду:
Эта команда скачает библиотеку и зафиксирует её точную версию в файле Gemfile.lock. Это гарантирует, что на сервере и у других разработчиков будут установлены абсолютно идентичные версии библиотек.
Заключение
Мы подготовили фундамент. У нас есть настроенное окружение, понимание архитектуры MVC и созданное приложение. Мы выбрали путь монолита, который позволит нам разрабатывать быстро и эффективно.
В следующих статьях мы начнем наполнять наше приложение жизнью, изучая, как Hotwire меняет правила игры в интерактивности, и как InertiaJS позволяет интегрировать мощь React/Vue прямо в Rails-монолит без боли создания API.
Готовы? Проверьте свои знания в тесте ниже и переходите к следующему уроку!