Если вы когда-либо создавали веб-приложения на Ruby, то знаете, как быстро простота Rails или Sinatra может перерасти в сложную архитектуру, избыточные слои абстракции и бесконечные дебаты о том, куда именно положить бизнес-логику или как назвать очередной контроллер. Встречайте Brut — новый веб-фреймворк для Ruby, который полностью переосмысливает привычные подходы, делая процесс разработки проще, приятнее и современнее.
🔥 Чем Brut отличается от привычных Rails или Sinatra?
Привычные нам Ruby-фреймворки обычно строятся вокруг контроллеров, маршрутов, REST-ресурсов и множества абстракций, которые не всегда оправданы. В Brut всё иначе:
- 🚫 Нет контроллеров и REST: вместо этого вы пишете страницы (Page), формы (Form) и отдельные обработчики действий.
- 🎨 Серверная генерация HTML: вместо шаблонов ERB или HAML используется удобная и быстрая генерация HTML-кода через Ruby-классы с помощью библиотеки Phlex.
- ⚙️ Современный JS и CSS: вы можете использовать любой JavaScript и CSS без ограничений, Brut предоставляет встроенный инструмент esbuild для минимизации и сборки.
Пример страницы, показывающей текущее время:
class TimePage < AppPage
def initialize(clock:)
@clock = clock
end
def page_template
header do
h1 { "Добро пожаловать на страницу времени!" }
TimeTag(timestamp: @clock.now)
end
end
end
Это кратко, понятно и не требует дополнительного объяснения.
🚀 Чем ещё удобен Brut?
Несмотря на минималистичный подход, Brut предоставляет готовые решения «из коробки», которые существенно ускоряют и упрощают разработку:
- 📊 Мониторинг через OpenTelemetry — получите встроенный мониторинг производительности приложения.
- 🗃️ Работа с БД через Sequel — быстрый, понятный и производительный доступ к базам данных.
- ✅ Автоматизированное тестирование с RSpec — тестируйте легко, используя уже знакомые инструменты.
- 🌐 BrutJS — библиотека для работы с веб-компонентами, что позволяет легко расширять функционал страницы.
- 🌎 Поддержка локализации и работы с часовыми поясами — меньше ошибок и головной боли при работе с международными пользователями.
Кроме того, Brut заботится о безопасности по умолчанию:
- 🔐 Автоматическая установка политики безопасности контента (CSP).
- 📌 Строгие правила работы с БД: поля не могут быть null по умолчанию, внешние ключи обязательно проиндексированы и корректны.
- 🕒 Время всегда timezone-aware, избегая типичных проблем с часовыми поясами.
🛠️ Простота настройки и запуска
Brut максимально упрощает начало работы, предлагая запуск приложения через Docker-контейнер, без необходимости предварительной установки Ruby:
docker run \
-v "$PWD":"$PWD" \
-w "$PWD" \
-it \
thirdtank/mkbrut \
mkbrut my-new-app
cd my-new-app
dx/build && dx/start
dx/exec bin/setup
dx/exec bin/dev
Через минуту приложение будет доступно на локальном порту — легко и удобно.
🌟 Философия минимализма
Создатель Brut, Дэвид Брайант Коупленд, подчеркивает важность минимализма и отказ от ненужных абстракций:
- ❌ Без YAML-конфигов: все конфигурации и локализация описываются в Ruby-коде, исключая YAML.
- 📦 Четкая структура классов: никаких «магических» методов и динамических конструкций — всё прозрачно и понятно.
- 🎯 Фокус на Ruby и браузерах: Brut максимально использует возможности современных браузеров и Ruby 3.4, избегая устаревших практик и технологий.
💬 «Я хочу получать удовольствие от веб-разработки. Хочу просто писать Ruby, HTML и использовать мощь современных браузеров. Мне не нужна бесконечная гибкость и споры о мелочах. Я просто хочу делать классные веб-приложения» — говорит Дэвид Брайант Коупленд.
🎩 Мнение автора статьи: почему Brut — это именно то, что нужно Ruby-сообществу?
Как разработчик, который пробовал разные подходы и фреймворки, я вижу в Brut важный шаг вперёд. Rails, безусловно, мощный инструмент, но его сложность порой зашкаливает. Sinatra же наоборот — слишком низкоуровневый и требует много ручной работы. Brut идеально балансирует между минимализмом и полнофункциональностью.
Что особенно радует лично меня:
- 🚀 Простота старта без установки и настройки Ruby-окружения.
- 🎨 Возможность писать чистый Ruby-код и легко генерировать HTML через Phlex.
- 🧩 Отсутствие бесконечных дебатов о том, где именно должна находиться бизнес-логика или как правильно назвать контроллер.
На мой взгляд, Brut действительно возвращает радость разработки веб-приложений и подходит как опытным, так и начинающим Ruby-разработчикам, которые устали от усложнения простых задач.
📝 Попробуйте сами!
Хотите попробовать Brut в действии? Полная документация и пример готового приложения доступны на официальном сайте и GitHub:
Если вы хотите писать Ruby-приложения быстро, эффективно и с удовольствием — Brut станет отличным выбором. Пора попробовать что-то новое и освежить подход к веб-разработке! 💎✨