Для этого типа файла конфигурации, который содержит материал, который зависит от окружающей среды (DEV, тестирование, постановка, производство, ...), я обычно использую один файл для каждой среды, и все они привязаны к источнику-контролю.
Например, я мог бы иметь:
databases.yml
== разрабатываемая версия, которая будет работать, когда проект будет извлечен из системы управления версиями на компьютере разработчика.
databases.testing.yml
databases.staging.yml
databases.production.yml
Затем при создании (или аналогичный) архив .tag.gz
, который будет развернут в другую среду, скопировать файл, который соответствует пункт назначения - по умолчанию.
Например, при создании архива, который будет развернут на рабочем сервере, я копирую databases.production.yml
в databases.yml
в архив.
Таким образом, приложение всегда использует databases.yml
, независимо от того, в какой среде оно развернуто, и все возможные конфигурации выполняются с помощью источника.
Конечно, это работает намного лучше, если у вас возникли некоторые упаковки процесс/сборки - и не просто загрузить файл на серверы с помощью FTP вручную ...
Спасибо за быстрый ответ. Вы полезны, но не в этом конкретном случае. Я прошу указать способ локального переопределения управляемых версиями баз данных.yml во время разработки. Для развертывания это не проблема для его редактирования и ввода правильных значений. – gnrfan
Ну, при разработке, я использую default databases.yml, который находится под контролем источника - нет необходимости переопределять что-либо, таким образом * (и без риска совершить то, что не должно быть) * –
Идея пришел с тех пор, как я также развился с Django. Так как setup.py - это просто модуль Python, вы пытаетесь импортировать файл local_settings.py, и если он успешно импортирован, вы получите локальные изменения, применяемые к конфигурации. Разумеется, settings.py имеет версию и local_settings.py не вернётся. Я ищу что-то подобное. – gnrfan