我们是否应该在承诺GIT时加入schema.rb
?还是应该忽略它?什么是正确的方法?
答案 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
之后从服务器提取新的更改。