假设各人用的数据库类型不一样。提交就会冲突,如何解决呢?
master 里肯定有这个文件。我听说这种文件不能 ignore 的。
就是靠 ignore 的啊……一般建个 database.yml.sample,在.gitignore 了加上 config/database.yml,然后删除 git 里的 database.yml 即可
为什么要用不一样的数据库。谁都可以装 sqlite3, PostgreSQL, MongoDB。
用 PostgreSQL 的话,development 和 test 数据库的用户名和密码留空,默认系统用户。谁都没问题。
Production 和 staging 数据库不靠 database.yml 管理,文件里面有没有无所谓。
经过这两年的经验,完整方法如下:
开发时:
布署时:
其他配置文件类似,如果是敏感的字段,可以使用环境变量,就这些。
统一开发环境。尽量和线上的一致。生产环境的用环境变量。database.yml
是支持 ERB 的:
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
database: <%= ENV['DB_INSTANCE'] %>
rails 4.1.0 可以直接使用 URL 了。
#7 楼 @lyfi2003 嗯。 config/database.yml要ignore,每个环境(开发人员或生产环境)有单独目录来保存配置文件(全部提交git仓库),并做软链接
ln -fs environments/config/database.yml config/database.yml
environments 目录如下:
environments
├── dev1.example.com # 开发1
│ └── config
│ ├── database.yml
├── dev2.example.com # 开发2
│ └── config
│ ├── database.yml
├── prod.example.com # 生产环境
└── config
├── database.yml