Ruby on Rails


RoR - самый целостный и полноценный framework для ruby. Есть и более легковесные элегантные аналоги. Однако, в них не решены многие проблемы, которые решены в rails. Если начать их решать, то получится такая же rails. Сейчас этим путем идет hanami: по мере развития он превратится в еще одну rails, но с меньшим числом библиотек.

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