Подходят ли Rails Engines для управления несколькими версиями приложения? - PullRequest
2 голосов
/ 09 марта 2009

У меня есть приложение rails с основными функциями (макет, пользователи, обмен сообщениями и т. Д.) И 3 различными версиями, которые добавляют свои уникальные функции поверх основного набора. Каждый из них в настоящее время находится в отдельных каталогах и развертывается отдельно в данный момент.

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

Я бы хотел, чтобы эти 3 папки были просто основным приложением, чтобы я мог вносить изменения с помощью git и иметь уникальные функции с помощью движка в папке плагинов. Таким образом, я могу сохранить одну версию основных функций и отделить уникальные функции.

Это осуществимый подход к решению этой проблемы?

Я никогда раньше не использовал движки и просто узнал о них с Rails 2.3.

1 Ответ

3 голосов
/ 09 марта 2009

Я не знаю, являются ли двигатели рельсов здесь решением, но позвольте мне рассказать, как мы решаем эту проблему в одном из наших проектов.

У нас есть основной проект и два проекта, которые в значительной степени используют большую часть одних и тех же данных (в основном модели rails). Вот как мы это настроили:

3 репозитория git:
- основной проект
- подпроект 1
- подпроект 2

Базовый проект - это полностью нормальное git-репо, но в подпроектах базовый проект - это подмодуль git. Затем символические ссылки добавляются и отслеживаются с помощью git. Например:

/subproject $: git submodule add git@git.repo:core.git core
/subproject $: cd app
/subproject/app $: ln -s ../core/models models

Теперь подпроект / приложение / модели извлекается из основного проекта. Вы можете сделать это для любого количества файлов.

для обновления из репозитория ядра:

/ subproject $: обновление подмодуля git && git commit

Очевидно, что это намного проще, чем копировать файлы. Я надеюсь, что это работает для вас.

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