У вас нет. В какой-то момент вам нужно вставить этот материал, и он должен быть в открытом виде.
Это обычно является проблемой во время развертывания, когда вы не хотите, чтобы кто-либо, у которого есть доступ для чтения к репозиторию, видел конфигурацию db для серверов развертывания.
Я работал вокруг этого, имея специальную задачу capistrano, которая копирует (или символизирует) базу данных.yml из домашнего каталога сервера в приложение. (Таким образом, в моем репо есть пустой database.yml и она будет переопределена всякий раз, когда я публикую новую версию секретной версии, которая уже присутствует на сервере)
Я писал об этом здесь: http://www.tigraine.at/2011/09/25/securely-managing-database-yml-when-deploying-with-capistrano/
Что касается не совместного использования этого при разработке: просто поместите database.yml в ваш .gitignore, и он не будет зафиксирован.
Не будет ли символическое создание конфигурационных файлов лучшим решением, а затем копировать их каждый раз? –
Да, хорошая точка. – Tigraine