在GIT中处理Rails db / schema.rb文件的正确方法是什么?

时间:2011-06-23 06:43:46

标签: ruby-on-rails git

我们是否应该在承诺GIT时加入schema.rb?还是应该忽略它?什么是正确的方法?

4 个答案:

答案 0 :(得分:61)

Rails 2的标准schema.rb文件位于文件顶部注释块的末尾:

# It's strongly recommended to check this file into your version control system.

我踢过的Rails 3 schema.rb也说了同样的话。我认为评论说明了一切。


更新以回应评论 是的,可以犯错,你可以得到相互冲突的变化和错误,使你的schema.rb变得更糟,但这就是你希望它在版本控制下的原因,版本控制允许你跟踪所有内容并在需要时进行备份。整个源代码树中只有一件事指定了数据库模式,即schema.rb。您的数据库模式绝对是一个关键工件,需要在版本控制中跟踪任何重要工件。

schema.rb的所有更新/合并问题都应该通过整理出有冲突的迁移进行整理,以便schema.rb解决问题,以解决实际问题。

是的,schema.rb是生成的文件,但它只是在文本编辑器生成pancakes.rb模型文件或生成未编辑的脚手架文件的意义上生成的。

是的,您可以通过构建新数据库然后运行所有迁移来重建schema.rb文件。但是,您应该立即清除旧的迁移,以避免每次rake db:migrate都检查数百个迁移文件,因此“重建并运行所有迁移”通常不是高活动项目中的选项。

答案 1 :(得分:1)

嗯,默认情况下,它不包含在.gitignore中。所以,我认为你不会有问题包括它(我在我的项目中没有任何问题)。

答案 2 :(得分:1)

是。使用rake db:reset和其他命令时,模式文件用于配置数据库。只应在更改数据库模式时使用迁移,并且始终会生成新的模式文件。

答案 3 :(得分:0)

我不会将此文件提交给Git,因为它是在我启动rake db:migrate时创建的。

如果我将此文件提交给Git,我无法在每个db:migrate之后从服务器提取新的更改。