Rails 多人开发,database.yml 怎么管理?

chenge · 2014年04月25日 · 最后由 _samqiu 回复于 2014年04月27日 · 4351 次阅读

假设各人用的数据库类型不一样。提交就会冲突,如何解决呢?

master 里肯定有这个文件。我听说这种文件不能 ignore 的。

类型不同怎么开发?

#1 楼 @Rei sqlite 用来测试是可以的吧。

就是靠 ignore 的啊……一般建个 database.yml.sample,在.gitignore 了加上 config/database.yml,然后删除 git 里的 database.yml 即可

可能听反了, database.yml (一般)是必须 ignore 的。

为什么要用不一样的数据库。谁都可以装 sqlite3, PostgreSQL, MongoDB。

用 PostgreSQL 的话,development 和 test 数据库的用户名和密码留空,默认系统用户。谁都没问题。

Production 和 staging 数据库不靠 database.yml 管理,文件里面有没有无所谓。

#3 楼 @cassiuschen 似乎这样是可以的。不过可能跟部署还有关,需要自动部署,否则每次部署还要去改名字就太麻烦了。谢谢

ignore,自己维护自己的,生产服务器是保密的,放在 shared 下 ln -s.

database.yml 是需要 ignore 的

统一开发环境。尽量和线上的一致。生产环境的用环境变量。database.yml 是支持 ERB 的:

username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
database: <%= ENV['DB_INSTANCE'] %>

rails 4.1.0 可以直接使用 URL 了。

database.yml 必须 ignore. 而且不同数据库之间还是有差异的,建议每个人在本地用服务端相同的数据库。

你们都不知道 12factor App?http://12factor.net/config

#12 楼 @hooopo 没太看懂他的意思,是主张用 env 变量么?

我们开发 database.yml 都不 ignore 的,统一到一个公共机器,test 环境是在各自的本机

数据库类型不一样?管理做的太差了吧

#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

可以做不同的环境类似:dev,lab,xsf etc...然后分别在database.yml中配置,然后各自用各自的 env.

一般来说 database.yml 是不进入版本控制的。

赞同 16 楼,用 ln 命令创建链接可以很好的解决这个问题。

20 楼 已删除
tonytonyjan rails database.yml 与 config.yml 的配置方法 提及了此话题。 04月03日 10:57
需要 登录 后方可回复, 如果你还没有账号请 注册新账号