Для этого типа файла конфигурации, который содержит материал, зависящий от среды (dev, testing, staging, production, ...) , я обычно использую один файл на среду, и все они фиксируютсядля управления исходным кодом.
Например, я мог бы иметь:
databases.yml
== версию для разработки, которая будет работать, когда проект извлекается из управления исходным кодом накомпьютер для разработки. databases.testing.yml
databases.staging.yml
databases.production.yml
Затем при построении .tag.gz
(или аналогичный) архив, который будет развернут в другой среде, я копирую файл, который соответствует месту назначения, в файл по умолчанию.
Например, при создании архива, который будетбыть развернутым на рабочем сервере, я копирую databases.production.yml
в databases.yml
, в архиве.
Таким образом, приложение всегда использует databases.yml
, независимо от того, в какой среде оно развернуто - и всевозможные конфигурации передаются в source-control.
Конечно, это работает намного лучше, если у вас есть некоторый процесс упаковки / сборки - и не просто загружать файл на сервер через FTP вручную ...