Очень часто работая с rails приложениями не задумываешься о том, что будет, если отказаться от стандартных Rails-way решений и библиотек, однако, столкнувшись со всем этим в процессе переосмысливания архитектуры приложения задаешь себе другой вопрос - а нужна ли теперь мне рельса?
Jun 23, 2014
https://speakerdeck.com/sharipov/rails-biez-activerecord-staraia-dobraia-riel-sa-ili-invalid-c-kostyliami
6. Проект:
!
1.5 года активной разработки
Тонна rails-way кода
CI зелёный ~ раз в месяц, а то и реже
>500 opened Github issues (процентов 70 - баги)
1000-1500 LoC классы, vim тормозит
!
Недовольные разработчики
Недовольный заказчик
7. 3-4 месяца в режиме bugfix-only
=> более-менее стабильный production
14. ActiveRecord troubles
Violation of SRP
Say goodbye to User class with >1000 LoC
Say goodbye to ActiveRecord-depended gems
Say goodbye to AR callbacks
23. Теряем:
Optimistic locking
Dirty tracking
ActiveRecord Serializers
ActiveRecord Observers
accept_nested_attributes_for
Callback hell
Головную боль при смене способа хранения :)
Приобретаем:
Простые PORO модели, репозитории, сервисы,
предсказуемый код
Независимые друг от друга слои
!
24. Руслан, а ты читал
статью CodeClimate
“7 patterns to refactor fat
ActiveRecord models?!”
25. ServiceObjects оперируют с ActiveRecord
FormObjects отвечают за хранение
QueryObjects оперируют с ActiveRecord
Decorator также тесно связан с ActiveRecord