ruby-on-rails - 您如何与开发人员团队一起管理 Ruby on Rails 迁移?

标签 ruby-on-rails version-control migration

我们有一个开发团队,他们每个人都将使用 Rails 工具为我们的系统开发数据库迁移。迁移最初似乎是管理数据库模式更改的好方法,但随着我们继续,以分布式方式管理更改变得越来越困难。如果我们每个人都自己开发迁移,我们如何调和出现的问题?

要具体说明问题,请想象以下场景时间线:

  1. 开发人员 A 创建了一个时间戳为上午 9:00 的新迁移文件。
  2. 开发人员 B 创建了另一个时间戳为上午 10:00 的新迁移文件。
  3. 开发人员 B 检查上午 10:00 和上午 11:00 的迁移
  4. 开发人员 A 检查上午 9:00 和上午 11:30 的迁移

这里可能会出现很多问题,特别是如果两个迁移文件在更改时发生冲突,但最基本的问题是有些人在上午 9:00 迁移时运行了上午 10:00 迁移 checkin 。与迁移关联的时间戳当然是文件创建的时间,而不是 checkin 的时间,这会弄乱 Rails 迁移器。

这是一个可以解决的问题,但解决方案可能有很多不同的选择。解决此问题的最佳方法(或至少是一种好方法)是什么?

最佳答案

这看起来更像是一个团队沟通问题,或者说是一个简单的流程问题。迁移版本从序列号更改为时间戳,以避免开发人员 A 和 B 使用相同版本创建迁移的问题。

为了避免迁移冲突:

  • 在创建迁移时始终让团队了解情况。这应该可以完全避免这个问题。
  • 在将您的代码更改检查回主共享存储库之前,始终从您的存储库中提取并测试迁移(并运行您的测试套件)。这是一个应该始终遵循的安全网。

现在你的场景看起来像这样:

  1. 开发人员 A 创建了一个时间戳为上午 9:00 的新迁移文件。
  2. 开发人员 B 创建了另一个时间戳为上午 10:00 的新迁移文件。
  3. 开发人员 B 从存储库中提取。意识到没有新的变化,在上午 10:00 和上午 11:00 检查迁移。
  4. 开发人员 A 从存储库中提取数据,运行迁移和测试套件,解决所有冲突并在上午 11:30(好吧,也许是 11:35)推送到存储库。

切勿在未确保您的更改不会引入冲突或破坏构建的情况下推送到共享存储库。

关于ruby-on-rails - 您如何与开发人员团队一起管理 Ruby on Rails 迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375749/

相关文章:

css - 带有 Rails 应用程序的特定于页面的 CSS

ruby-on-rails - Capybara - 检查链接上是否存在数据属性

linux - Git 如何知道要推送到哪个存储库?

mysql - Liquibase格式化的sql前提条件tableExists

.net - 使用 MongoDb 处理迁移

SQL Server迁移数据库性能哪个更好

ruby-on-rails - Rails 将哈希数组映射到单个哈希

ruby-on-rails - rails : Use a variable as a hash key

git - 与 git 斗争,无法推送到新的远程存储库

sql-server - SSDT 如何在不丢失自定义客户端数据库对象的情况下使用 : Deploy . dacpac?