Применение упаковочных рельсов внутри других приложений - PullRequest
4 голосов
/ 14 февраля 2012

Я встроил пользовательскую панель администрирования в приложение Rails, которое позволяет редактировать контент определенных моделей через графический интерфейс. Первоначально я разработал приложение «admin», которое будет действовать в качестве родительских приложений - с его MVC, Gemfile, миграциями и т. Д. - и создал подпрограммы (в каталоге с именем frontends), которые действуют как веб-интерфейсы для моделей администратора. Подприложения наследуют MVC от родительского приложения администратора, что позволяет разрабатывать внешние интерфейсы веб-сайтов и основываться на существующей архитектуре администратора без постоянного повторного создания сайтов администрирования для каждого нового проекта.

Структура на моей локальной машине в настоящее время выглядит следующим образом:

Administration Application <-- Individual git repo
    -> app
        -> admin
    -> config
    ...
    -> frontends
        -> Website_1 <-- Individual git repo
            -> app
            -> config
            ...
        -> Website_2 <-- Individual git repo
            -> app
            -> config
            ...

Текущий внешний интерфейс определяется простым файлом frontend.yml в конфигурации, который загружает приложение внешнего интерфейса в инициализатор перед приложением администратора.

Я чувствую, что неблагоразумно иметь такую ​​вложенную структуру. Во-первых, вложенность git-репозиториев на моем компьютере-хранилище грязная, и, что более важно, очень сложно переключить контекст проекта за относительно короткий промежуток времени. Например, если я хочу переключиться с Website_1 на Website_2, я должен выйти из rails server и запустить задачу rake, которая переключает внешние интерфейсы. Это также становится немного более громоздким, когда веб-интерфейс использует другую ветвь приложения администрирования. Я трачу много времени впустую, переключаясь между контекстами, чтобы продолжить разработку своих проектов.

Я хотел бы изменить структуру приложения, в котором каждый интерфейс является собственным независимым приложением Rails. Кажется, это упростило бы переключение контекстов разработки - позволяя запускать более одного приложения одновременно в rails server, тестировании и т. Д. Я также хочу иметь возможность продолжать размещать приложение администрирования под git, поскольку В ряде веток и тегов есть разные варианты приложения.

Каков наилучший способ приблизиться к этой реконфигурации? Я думал о создании жемчужины административного приложения и загрузке его из Bundler.

1 Ответ

3 голосов
/ 22 февраля 2012

Я думаю, что драгоценный камень - ваша лучшая ставка здесь.В частности, я хотел бы изучить использование двигателя;Движок - это драгоценный камень, который можно монтировать прямо в вашем rout.rb, используя что-то вроде этого:

mount Administration::Engine => '/administration'

Движки - это, по сути, мини-приложения, которые монтируются непосредственно в другие приложения, что звучит именно так, как вам нужно.

Для получения дополнительной информации о том, как начать, ознакомьтесь с документацией Rails engine .И вот удобное пошаговое руководство, за которым вы можете следовать , которое включает ссылку на enginex , быстрый генератор для загрузки драгоценных камней движка.

...