Ruby on Rails: где мне хранить модули? - PullRequest
21 голосов
/ 25 октября 2010

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

Идея:

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

Вопросы:

  1. Где мне хранить все модули? Я не вижу никакой папки app / modules в Rails.
  2. Если моим модулям требуются драгоценные камни, я должен включить их в модули или в модели (где они фактически используются)?
  3. Я хочу сделать мое приложение масштабируемым. Например, я хочу добавить новую работающую авиакомпанию (модуль) без изменения какого-либо кода в «Маршрут», «Рейс» или любой другой модели. Я представляю что-то вроде метода "IncludeAirlines", который будет проходить через модули / Airlines / name .rb, включать каждый модуль и вызывать необходимый метод для него (например, name .UpdateRoutes). , Есть ли лучший способ реализовать это в Ruby on Rails?

1 Ответ

37 голосов
/ 25 октября 2010

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

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

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

  2. Каталог app / models будет подходящим местом, если ваш модуль занимает центральное место в вашей бизнес-логике. Популярный пример использования здесь, где вы используете модуль как миксин для СУШКИ ваших моделей / контроллеров.

  3. 37 Сигналы вводили схему обработки их как «проблем» и хранения их в приложении / проблемах.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...