如何使用Git分支和Rails迁移?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我正在开发一个Rails应用程序,它有相当多的Git分支,其中很多都包括db迁移。我们尽量小心,但有时主人中的一些代码会请求在另一个分支中删除/重命名列。

  1. 什么是一个很好的解决方案,以“耦合”GIT分支与DB状态?
  2. 这些“国家”究竟是什么?如果数据库只有几个GBs大小,我们就不能简单地复制它。
  3. 那么合并会发生什么呢?
  4. 该解决方案也会转换为NoSQL数据库吗?我们目前使用MySQL、MongoDB和redis。

提问于
用户回答回答于

如果有一个无法轻松复制的大型数据库,那么我建议使用正常的迁移工具。如果想要一个简单的过程,我建议如下:

  • 切换分支之前,回滚(rake db:rollback)到分支点之前的状态。然后,切换分支后,运行db:migrate...。这在数学上是正确的,只要你写down剧本,它会起作用的。
  • 如果在切换分支之前忘记了这一点,通常可以安全地切换回、回滚和切换,所以我认为作为一个工作流,这是可行的。
  • 如果在不同分支的迁移之间存在依赖关系。那么,将不得不认真考虑。
用户回答回答于

在任何分支中添加新迁移时,请运行rake db:migrate并同时提交迁移db/schema.rb

如果在开发中这样做,将能够切换到另一个具有不同迁移集的分支,并且只需运行rake db:schema:load

请注意,这将重新创建整个数据库,现有数据将丢失。

可能只想从一个非常小心的分支运行生产,因此这些步骤不适用于此(只需运行)rake db:migrate如往常一样)。但是在开发过程中,从模式重新创建数据库并不是什么大事,这就是rake db:schema:load就行了。

扫码关注云+社区