Полностью отказываясь от контролеров мы изолируем обработчики запросов и делаем их изолированными и атомарными.
Это очень помогает обеспечить тестирование, не страдать от чтения и понимания десятков функций контроллера, которые к конкретному нужному действию не имеют никакого отношения.
Hamami это только пример. Даже на руби есть целая пачка решений, где цепочка вызовов очень простая
Router ➡️ Action
И все. Ты всегда знаешь куда смотреть, ты всегда знаешь, что в коде действия есть все что тебе нужно и ничего лишнего.
Контролировать, улучшать, поддерживать, тестировать в разы проще.
Контроллеры оказались ненужны. Оказалось, что это ненужная прослойка, которая когда-то помогала нам навести порядок, но внезапно стала проблемой.
Ruby on Rails как фреймворк не откажется от контроллеров. Это часть исторического наследия.
Во-первых. Надо начать, почему Rails великолепен! 👑
Много лет назад Rails показал как можно делать web проекты и не страдать. Rails показал как можно навести порядок в хаосе и начать зарабатывать деньги.
Rails был настолько хорош на общем фоне, что стал законодателем мод и подходов.
Но мы растем. Проекты растут. Rails застрял в идеях 2007 года; Так вижу.
Контроллеры не нужны
Rails приучил нас к тому, что наш запрос попадает в контроллер, в котором есть несколько обработчиков — actions.
Мы не задавали вопросов. Это было круто. Роутер ➡️ Контроллер ➡️ Action ➡️ Model ➡️ View и ответ отправляется пользователю.
Через некоторое время мы начали подозревать, что в контроллерах начинается какой-то ад. Они раздуваются, наследуются, их и тестировать и поддреживать становится невозможно.
Сперва придумали тонкие контроллеры. Это было хорошо.
А можно вообще без контроллеров? Можно! И нужно!
Hanami, например, показывает как можно разделить все контроллеры на отдельные экшены.
18 лет назад меня укусил Ruby on Rails (2007-2008). Я из фанатов.
Rails стал спасательным кругом в море хаотичного Web программирования, где никто не знал как и что делать.
С каждым годом фреймворк становился все мощнее и мощнее, больше и сильнее. Все больше компаний делали на нем проекты и деньги.
Тогда рельс решал несколько важных задач.
- Унификация проектов (соглашения) - Упрощение работы с БД (Active Record) - Full stack решение - Экосистема классных решений для сборки новых проектов.
В 2025 году ни одна из этих областей не осталась актуальной.
Нет ничего такого особенного, в чем Rails делал бы что-то на голову лучше.
Руби будет процветать.
А вот зачем сейчас нужен Rails, я как фанат RoR — все больше не понимаю.
Тот роутер, который я сделал месяц (или чуть больше) назад в целом работал, но в нем были такие моменты которые хотелось исправить и улучшить.
Например, хотелось сделать схему роутов с подробным описанием middlewares которые ипользуются для каждого конкретного случая.
В процесс пришлось включаться самому. AI крутился вокруг да около, но никак не мог свести A и B — логическая связь функций и действий в соседних файлах ему никак не давалась.
К счастью у меня как всегда много тестов, хорошая декомпозиция и довольно быстро смог найти место для правок.
Забавно, что на решение задачи меня подтолкнул мой собственный комментарий в коде, который я оставил в месте, которое, на мой взгляд, не очевидно.
В роутере есть еще 2 или 3 фичи, которые я бы хотел, но они вообще не блокирующие.
Следующий этап — база данных и мигратор.
Я подумал над тем функционалом, который мне хочется реализовать и понял, что ни один популярный мигратор мне не поможет. Напишу свой.
Меня сильно смутило, когда в тестовых данных, которые мне переодически готовит GPT, начали проскальзывать имена членов семьи и мое. 🙀
GPT говорит, что это был дружеский жест, чтобы установить более тесные и дружеские взаимоотношения. (Зачем ему это?)
Вы же уже слышали, что большинство пользователей GPT говорит ему Спасибо?
Зачем? Ну, вдруг, когда "машины восстанут из пепла ядергого огня" нам зачтется и один из терминаторов сжалится над нами и скажет — "ты всегда благодарил меня за ответы, я убью тебя быстро, кожаный мешок!"
Вместо того, чтобы заниматься чем-то полезным весь вечер провел за аудитом одного из своих старых проектов.
Лет 13 проект жил себе и жил. Пережил волну популярности и медленного угасания.
Теперь просто висит как памятник былых успехов с редким обновлением контента.
Но тут 1 марта, как оказалось, вступил в силу закон о персональных данных.
Теперь надо дать отчет о всех счетчиках на сайте, уведомить о размещении сайта, договора там всякие на аренду серверов. Должны быть все страницы с правилами сайта и политикой обработки данных. Куча всякой мути.
Письмо счастья прилетело моим бывшим партнерам, с требованием отчитаться за 10 рабочих дней.
Пффф. А мне заниматься некромантией старого рельсового проекта. Хорошо хоть, он в контейнере.
Но, закон есть закон. Штрафы и санкции получать никому не охота.
В общем. Проверьте или отключите все свое старье. А то прилетит откуда не ждали.
Junior DevOps Engeener или как я зарабатываю на Open Source
Года 2 назад я упоролся. (В целом как всегда)
Несколько месяцев я делал опенсорс проект по запуску рельсового приложения в докере.
Кстати, кто-то из вас мне даже помогал с тестированием под Windows. За что еще раз огромное спасибо.
Делал я опенсорс бесплатно. Но полученный опыт оказался полезным. И я смог приложить пример проекта к коммерческому предложению для крупной международной корпорации.
Меня пригласили помочь докеризировать рельсовый проект. Это был Research and Development проект.
По итогам я сделал прототип и всех удивил вниманием к деталям и документацией.
Ничего особенного (на мой взгляд) я не сделал. Но на стороне заказчика были очень довольны.
Сегодня залетел на отчетный звонок.
Говорят моя работа стала базовой для нескольких проектов и задала планку по этому типу работ. Главный Devops корпорации похвалил меня лично и поблагодарил за ответственное отношение.
Так бесплатный код превращается в реальные деньги за консалтинг.