Как управлять различиями, используя одну и ту же кодовую базу для нескольких сайтов Rails 2.3 - PullRequest
1 голос
/ 31 октября 2011

У нас есть веб-сайт, использующий Rails 2.3.x, bundler, nginx, passenger и git, и теперь мы хотели бы использовать тот же код для развертывания очень похожего сайта.Различия между ними будут включать:

  • Локаль
  • Базы данных
  • В некоторых случаях проверки
  • В некоторых случаях представления

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

Некоторые идеи, которые у нас были:

  • Создавайте новые среды Rails, такие как production-a и production-b , и обрабатывайте различия в соответствующих файлах среды.Одна потенциальная проблема заключается в том, что многие гемы и плагины жестко запрограммированы для поиска production или development сред.

  • Используйте Passenger для установки глобальной переменнойили используйте домен для запроса, чтобы определить, какой контекст использовать.Проблема с этим - грабли, задачи cron и т. Д., У которых нет доступа к этому состоянию.

  • Поддерживайте две версии каталога конфигурации.Это было бы неудобно, поддерживая 2 версии всего файла конфигурации, многие из которых были бы идентичны.Кроме того, теперь я уверен, как использовать git, чтобы сделать это правильно.

Любые идеи, советы или примеры будут с благодарностью! Вопрос # 6753275 связан, но кажется неполным.

1 Ответ

2 голосов
/ 31 октября 2011

Одним из решений, которое я использовал в проекте rails 2.3.x, было преобразование всего сайта в engine.Это на самом деле довольно просто, создайте папку под vendor\plugins\ и переместите туда все app.Вы можете увидеть объяснение рельсов 2.3 здесь .

При необходимости вы можете даже переместить все миграции и прочее туда, а также использовать задачу rake для их запуска.

Все, что должно быть отменено, может быть просто помещено в реальный проект рельсов с использованием двигателя.Таким образом, у вас будет два rails-проекта, с их собственной конфигурацией, локалями и некоторыми локальными отменами, и одним большим общим плагином / движком.

Мы использовали git submodules для синхронизации кода между различными проектами.

В рельсах 3 это еще проще, поскольку движок теперь может быть просто драгоценным камнем.

Надеюсь, это поможет.

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