Реализованные объекты Rails vs lib
Краткая версия: когда я должен помещать что-то в app/services, а не в lib/.
Я недавно проезжал маршрут объектов сервиса, но я понял, что иногда я не могу решить проблему погоды, я должен извлечь что-то в объект службы (который у меня есть в приложении/сервисах) или в класс в моем lib.
Одна вещь, которую я обычно ищу, - это если класс нуждается в доступе к параметрам или другим элементам, специфичным для контроллера (т.е. как параметр в инициализаторе), тогда я склонен использовать его в сервисах.
Что такое конвенция здесь? Доказательство (ссылки) было бы приятным:)
Ответы
Ответ 1
Вот как я склонен думать о коде, который идет в lib/
:
- Он не связан с моделями доменов приложения.
- Его можно использовать повторно в других проектах.
- Он потенциально может стать его собственным камнем. Таким образом, положить его в
lib/
является первым шагом в этом направлении.
Услуги:
- Они, как правило, знают приличную сумму о внутренней работе доменных моделей.
- Выполните работу, специфичную для бизнес-домена, в моем приложении.
- Сопрягаются с конкретными моделями.
Ответ 2
IMO, услуги - это абстракция вашего домена. Lib - это классы удобства, другие вещи, которые напрямую не связаны с вашими моделями.