Как эффективно обрабатывать изменения между производством и разработкой при обновлении из репозитория - PullRequest
0 голосов
/ 18 июля 2009

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

Полагаю, я мог бы написать скрипт для его автоматизации, но я надеюсь, что есть лучшее решение. Кто-нибудь еще решил эту проблему?

Эти вопросы похожи, но не задают одно и то же, просто чтобы вы знали, что я посмотрел:

(1) внести изменения в производственную базу данных

(2) передача изменений из dev в prod

Редактировать: Нельсон Лакет поставил меня на верный путь, который привел меня к Настройка Rails-приложений . Однако я не уверен, как ссылаться на мои константы FormController

Также я не хочу, чтобы меняли все ссылки на MyExternalCodeDir на что-то вроде config.MyExternalCodeDir.

Ответы [ 2 ]

3 голосов
/ 18 июля 2009

Вы абстрагируете все параметры среды (соединение с базой данных / пути / URI) в один файл. Давайте назовем это «config.ini»

Затем вы просто фиксируете «шаблон» с именем «config.ini.template», который содержит структуру файла конфигурации, четко документирующую то, что ожидается при каждом значении, и разумные значения по умолчанию. Затем вы фиксируете этот файл.

После этого удалите текущий файл config.ini, соответствующий вашему местоположению, и добавьте его в svn: ignore. Теперь, когда вы копируете и вставляете config.ini.template в config.ini и изменяете свои настройки, он не будет зафиксирован в хранилище.

Он добавляет дополнительный шаг к развертыванию, но должен быть выполнен только один раз (если вы не добавите / не удалите параметры конфигурации). Это лучший и самый стандартный способ выполнить то, что вы хотите.

0 голосов
/ 18 июля 2009

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

...