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

chenge · April 25, 2014 · Last by _samqiu replied at April 27, 2014 · 4338 hits

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

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 Floor has deleted
You need to Sign in before reply, if you don't have an account, please Sign up first.