рекомендации по размещению классов в приложениях Rails, которые никуда не вписываются

Интересно, есть ли лучшие рекомендации о том, где размещать нестандартные файлы Ruby в приложениях Rails, те, которые невписывается в любой из каталогов по умолчанию (/controllersmodels и др.). Я

Я говорю о классах, которые используются контроллерами / моделями и т. д., но не являются подклассами ни одного из базовых классов Rails. Классы, которые включают функциональность, извлеченную из моделей, чтобы сделать их менее жирными. Некоторые из них выглядят как модели, но немодели AR, некоторые из них больше похожи на "Сервисы"некоторые - что-то среднее или что-то еще.

Несколько случайных примеров:

стратегия» классы, которые обрабатывают аутентификацию с помощью пароля, через Facebook и т. д. "XParams» объекты, которые инкапсулируют параметры или "XCreator» объекты, которые обрабатывают обработку параметров, чтобы выполнить некоторое сложное действие, которое приводит к созданию некоторых моделей AR в концеклассы, которые делают запросы к внешним API или инкапсулируют эти запросы и ответыподдельные модели, которые могут быть заменены реальной моделью AR (например, гость)Resque рабочие местаклассы, которые хранят и читают информацию из Redisклассы, которые выполняют некоторые конкретные действия, такие как обработка данных, создание отчетов и т. д. и вызываются из заданий Resque или заданий rakeI '

у нас их довольно много, некоторые из них добавлены вlib который заканчивается как куча случайных классов и модулей, некоторые пробираются вapp/models, Я'Я хотел бы организовать это как-то, но я неНе знаю, с чего начать.

Должны ли только модели AR входить вapp/models? Или это также нормально, чтобы положить туда какие-либо модели доменов или помощников? Как вы решаете, является ли модель моделью?

Должно все, что нене вписывается вapp войти вlib? Или, может быть, я должен добавить несколько новых пользовательских подкаталогов вapp? Какие подкаталоги и как мне разделить пользовательские классы?

Как вы справляетесь с этим в своих проектах? Я знаю, что каждый проект немного отличается, но должно быть некоторое сходство.

Ответы на вопрос(5)

Ваш ответ на вопрос