你应该什么时候 运行 对拉取请求进行迁移?

When should you run migrations on a pull request?

抱歉提出这样一个菜鸟问题 - git 和 ruby 在 rails 上的新问题。

我在学校编码团队工作,在 rails 编写应用程序。其中一个拉取请求有一个新的数据库,但是迁移还没有 运行 (rake db:migrate).

我们应该运行先在分支上迁移然后合并到master还是合并到master然后在master分支上rakedb:migrate?

如果您正在检查某人的工作(即这不是您的拉取请求,但他们说它已经准备好并且合并它是您的工作),那么您应该检查分支并测试迁移是否正常,因为如果你将它合并到 master(并推送它,这样每个人都可以得到更新)并且迁移不正常,那么每个人都会因为 master 分支损坏而感到沮丧。

这就是为什么我建议检查分支,运行 迁移,然后将 PR 合并到 master 并向上游推送。


如果这是你的 pull request 并且你确定一切都很好(或者你一个人在项目上工作),那么没有特定的顺序:只要确保你不要忘记所有的步骤(合并和迁移) ).

当我自己做的时候,我通常已经应用了迁移(因为我的分支工作需要它们),所以通常只需要掌握并合并分支。

在合并到 master 之前,你应该总是 运行 你的迁移,因为你会想知道该代码是否正常工作并且一切正常。请记住,运行迁移会更改您的 db/schema.rb 文件,如果出现错误,服务器将无法正常启动或出现故障。

至于是否运行 在提交到分支之前进行迁移,这取决于您在做什么。如果您是团队编码并且需要先审查工作,请继续提交,以便其他人可以检查分支并审查。

为什么有人会在具有尚未 运行 的新迁移的分支上打开拉取请求?拉取请求的作者如何知道迁移是否正确编写?

如果我正在审查拉取请求,我希望在将分支合并到 master 之前迁移 运行。另外,请确保您的 schema.rb 已通过迁移签入。

更好的做法是:

  1. 运行 rake db:migrate
  2. 提交回购协议

因为 db:migrate 修改了您的 db/schema.rb 文件,该文件显示 "current" 数据库状态。在您的存储库中拥有此文件的最新版本非常重要。

另请注意 db/schema.rb 中的注释:

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

因此是上面推荐的顺序。