@xskif

Как организовать код в Ruby on Rails на отдельные модули?

Уже несколько недель пытаюсь понять как организовать код в RoR на отдельные модули, как self-contained приложения. В Ruby и Rails я новичок. Модули на уровне языка изучил вдоль и поперек, но так и не понял почему у них две обязанности (группировка кода, встраивание в качестве трейтов) и как их использовать для группировки кода в Rails, не создавая gem, а если только с помощью gem, то как, все же, сделать набор модулей, которые я смогу переиспользовать в других приложениях?

Пример чего я хочу:
Создать модуль User/Forum/Shop. Путь к модулю, например, app\modules\user\[файлы модуля]
Внутри модуля свои собственные директории для моделей, контроллеров, представлений и помощников.
Возможность указать маршрутизатору куда смотреть (искать модуль и его контроллер) при запросе на mysite.com/user/[controller]/...

Если Rails не для этого, то подскажите пожалуйста другой хороший пример организации кода.
  • Вопрос задан
  • 1998 просмотров
Решения вопроса 1
bondarenko
@bondarenko
Spacewalker
Попробуйте присмотреться к Rails Engine (rusrails.ru/engines)
Тот модуль (читай функциональную часть приложения) который вы напишете можно оформить как gem, а можно просто подключать из папки.
Подключение приложения заключается во включении его в Gemfile, монтировании приложения в routes.rb и запуске миграций.
Скорее всего это именно то что вам нужно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
viktorvsk
@viktorvsk
как их использовать для группировки кода в Rails, не создавая gem

Вы, наверное, слишком буквально понимаете слово Модуль.
Хотите группировать код - группируйте, отдельно модели, отдельно контроллеры, отдельно хелперы, отдельно вьхи.
Хотите группировать приложения, роутинг - гемы, энджайны.

В той форме, что вы представляли - app/modules/user/... - как вы представляли работать со статическими файлами? А с настройками окружения? А с роутингом ? После копипаста этой директории в другое приложение - вручную подправить фал роутинга?
Ответ написан
webus
@webus
Golang | Python | NodeJS | Java
django reusable apps
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы