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

Ruby on Rails: где я должен хранить модули?

Я новичок в Ruby on Rails, и мои вопросы касаются дизайна приложения, основанного на Rails 3. В Интернете есть много данных о создании стандартных веб-сайтов (таких как блоги), но мое приложение требует больше чем просто "пост и чтение", и я не уверен, как это реализовать.

Идея:

  • Модель "Маршрут" включает в себя ряд модулей авиакомпаний: "Ryanair", "easyJet" и т.д.
  • Метод Route.Update вызывает "UpdateRoutes" для каждого модуля авиакомпании (например, "Ryanair.UpdateRoutes", "easyJet.UpdateRoutes" ).
  • Он должен работать аналогично с большим количеством моделей (например, Flight.find) и другими авиакомпаниями ( "Delta.FindFlights" ).

Вопросы:

  • Где я должен хранить все модули? Я не вижу папку приложений/модулей в Rails.
  • Если мои модули требуют драгоценных камней, следует ли включать их в модули или модели (где они фактически используются)?
  • Я хочу сделать приложение масштабируемым. Например, я хочу добавить новую рабочую авиакомпанию (модуль) без изменения кода в "Маршрут", "Полет" или любую другую модель. Я представляю себе что-то вроде метода "IncludeAirlines", который будет проходить через модули/авиакомпании/name.rb, включать каждый модуль и вызывать необходимый ему метод (например, name.UpdateRoutes). Есть ли лучший способ реализовать это в Ruby on Rails?
4b9b3361

Ответ 1

Как вы знаете, модули обычно используются либо как пространства имен, либо как mixins.

Где вы размещаете модуль, зависит от того, насколько тесно связан модуль с каталогом приложений. Несколько шаблонов при хранении модулей:

  • Каталог/lib, если модуль не особенно "взаимодействует" или относится к приложению /, и вы рассматриваете модуль как внутренний плагин.

  • Каталог приложений/моделей будет подходящим местом, если ваш модуль занимает центральное место в вашей бизнес-логике. Популярный пример использования здесь - это то, где вы используете модуль как mixin для DRY для ваших моделей/контроллеров.

  • 37 Сигналы ввели образец рассмотрения их как "проблемы" и сохранили их в приложении/проблемах.

Если ваш модуль использует драгоценный камень, вам может потребоваться установить жемчужину в модуль (иногда требуется вовсе не требуется).

Ваш третий вопрос непонятен. Извини за это. Не совсем уверен, что вы пытаетесь сделать.