Подтвердить что ты не робот

Реализованные объекты Rails vs lib

Краткая версия: когда я должен помещать что-то в app/services, а не в lib/.

Я недавно проезжал маршрут объектов сервиса, но я понял, что иногда я не могу решить проблему погоды, я должен извлечь что-то в объект службы (который у меня есть в приложении/сервисах) или в класс в моем lib.

Одна вещь, которую я обычно ищу, - это если класс нуждается в доступе к параметрам или другим элементам, специфичным для контроллера (т.е. как параметр в инициализаторе), тогда я склонен использовать его в сервисах.

Что такое конвенция здесь? Доказательство (ссылки) было бы приятным:)

4b9b3361

Ответ 1

Вот как я склонен думать о коде, который идет в lib/:

  • Он не связан с моделями доменов приложения.
  • Его можно использовать повторно в других проектах.
  • Он потенциально может стать его собственным камнем. Таким образом, положить его в lib/ является первым шагом в этом направлении.

Услуги:

  • Они, как правило, знают приличную сумму о внутренней работе доменных моделей.
  • Выполните работу, специфичную для бизнес-домена, в моем приложении.
  • Сопрягаются с конкретными моделями.

Ответ 2

IMO, услуги - это абстракция вашего домена. Lib - это классы удобства, другие вещи, которые напрямую не связаны с вашими моделями.