【发布时间】:2013-05-08 07:08:54
【问题描述】:
目前,我正在使用一个巨大的 rails 应用程序和多个分支,每个分支都有此应用程序的新功能。 经常发生需要迁移的功能,在您将其与 master 合并之前,这应该不是问题:schema.rb 已使用您的开发数据库的信息进行了更新!
澄清一下:
1. Branch A has migration create_table_x
2. Branch B has migration create_table_y
3. Branch A adds another create_table_z and runs db:migrate
4. You want to merge Branch A with Master and you see table_x, table_y and table_z in the schema.rb of Branch A.
在分支中的每次迁移之前重置+种子数据库或为每个分支创建数据库都不是一个选项。由于 2 GB 的 SQL 数据很大,因此无法使用。
我的问题:
是否真的需要将 schema.rb 保留在存储库中,因为每次迁移都会重新构建它?
如果是这样,是否可以从迁移而不是数据库转储中构建架构?
【问题讨论】:
-
我认为您应该将 schema.rb 保存在您的存储库中。可能会发生,有人清理了迁移文件并删除了一些过去未使用的迁移......如果你没有统一的 schema.rb,我最终可能会一团糟。每次迁移都会更新架构文件,而不是完全重建。但无论如何,这是一个有趣的问题。
-
是的,问题是它是由当前数据库结构生成的,无论数据库中的表是添加到父级还是您所在的分支中。这就是我所说的“重建” .我希望有人知道一种更好的方法,然后在每次使用迁移切换分支时从 master 删除/复制数据库:)
标签: ruby-on-rails rails-migrations schema.rb