..
Ruby on Rails
RoR - самый целостный и полноценный framework для ruby. Есть и более легковесные элегантные аналоги. Однако, в них не решены многие проблемы, которые решены в rails. Если начать их решать, то получится такая же rails. Сейчас этим путем идет hanami: по мере развития он превратится в еще одну rails, но с меньшим числом библиотек.
В архитектуре rails есть несколько существенных недостатков:
- ActiveRecord занимает центральную часть и аккумулирует в себе естественным образом слишком много логики. Разделять такую модель сложно, так как она жестко привязана к схеме базы данных.
- Сложно разделить rails на модули. Да, создать модуль не сложно. Однако, чтобы этот модуль содержал в себе все слои: model, controller, view, - уже непросто. Файлы будут разбросаны по разным папкам.
- Наилучший способ разделения большого приложения на части - engine. Но он слишком тяжеловесный, сложно поддерживается, плохо документирован.
- Отсутствие слоя Page Model. Controller - это класс, который обслуживает несколько страниц и их логика перемешивается. Частично функцию Page Model берет на себя ActiveModel объект, который отвечает за отрисовку форму. Однако, это нарушает SRP и модель начинает иметь слишком много отвественности.
- Для решения проблемы из п4 повились helpers, которые являются примером процедурного программирования (не ООП)