А можно отмотать чуть историю?
Вопрос-то был про "сервисные объекты". Они сейчас в каждом проекте почти есть в каком-то виде, вот во фреймворке их нет.
И всем при этом надо решать одни и те же вопросы:
- API (как вызывать, что возвращать)
- как хранить/структурировать
- PORO/gem
- интеграция с фреймворком (вернуть ошибки, как принято во фреймворке, логирование, инструментирование)
У всех это все выглядит +- понятно и одинаково, но с вариациями в каждом пункте.
Если бы вариаций было меньше, то можно было бы сфокусироваться на задачах и не спорить/не решать/не придумывать велосипед.
Когда-то в рельсах не было action cable, active storage и прочих относительно недавних нововведений.
А теперь есть и стало проще.
А главное - по-прежнему можно это не использовать, если не надо.