Выкатывание новой версии приложения Rails - PullRequest
0 голосов
/ 19 мая 2011

Интересно, как люди справляются с постепенным внедрением функций и версий в производственную среду? В этом сценарии у вас есть две версии тестируемого кода, одна из которых уже находится в производстве, а другая должна быть развернута. Это общие проблемы.

  • разные версии кода в одном приложении rails.
  • различные версии приложения rails во время развертывания для пользователей.
  • различные структуры базы данных между версиями
  • перемещение данных между новыми базами данных и серверами.

вот несколько идей для обсуждения выше

  • если операторы с константами, номерами версий в именах M, V, C
  • баланс нагрузки на разные серверы приложений (как сделать липким?), RVM
  • иметь старые и новые поля в таблицах как временные, или переносить записи в новые таблицы или
    базы данных.
  • нет простого способа перемещения данных между серверы.

1 Ответ

0 голосов
/ 19 мая 2011

Похоже, вам нужна хорошая стратегия ветвления и слияния.Если вы используете что-то вроде Git или SVN, то что-либо на master или trunk, соответственно, должно быть готового к производству качества.Если вы сталкиваетесь с ситуациями, когда AbcController хорош и готов к работе, но XyzController ненадежен, то XyzController, вероятно, нуждается в дополнительном тестировании и еще не должен быть в мастере.

Миграции в рельсах также следуют этой политике, что приводит к вашей структуре данных.Если вы думаете, что готовы к производству, в вашей базе данных не должно быть значительных изменений.Возможно, вам нужно добавить столбец или функцию, но вы должны хорошо пройти рефакторинг базы данных оптом.

Наконец, загрузка / обновление данных - это боль в любой ситуации миграции.По моему опыту, это включает в себя написание SQL-скриптов для выполнения шагов или обновление базы данных для некоторых новых функций.Эти сценарии SQL также должны находиться под вашим контролем исходного кода.Rails может сделать это проще, написав ваши скрипты миграции в самом файле миграции.В зависимости от конкретной ситуации это может сработать.

...