在运行之前有没有一种简单的方法来测试迁移?

时间:2011-08-17 16:46:51

标签: ruby-on-rails ruby-on-rails-3 testing rails-migrations

换句话说,我想了解确保 self.down 实际回滚 self.up <的最佳方式em>在运行有问题的迁移之前。

如果我需要回滚迁移但 self.down 无法达到此目的,我该怎么办?

在处理可能具有破坏性的迁移时,哪种方法最佳? 只是一个数据库备份?

谢谢, 杜乔。

4 个答案:

答案 0 :(得分:3)

您应该在不应包含实时数据的开发数据库上进行开发。因此,数据是否被破坏并不重要,因为您可以轻松地再次生成它?

如果您发现自己的开发数据很重要但不理想,那么数据库备份可能是合适的。

答案 1 :(得分:1)

通常,迁移应仅包含架构更改。在这种情况下,它应该是非常安全的&amp;易于在开发/测试环境中运行迁移。如果出现问题,您可以一直重新创建数据库并使用一些测试数据填充它。但是,如果您要测试一些与数据相关的迁移,那么当您在生产中实际运行它们时可能会出错。

在那种情况下,正如您所提到的,数据库备份是您应该依赖的。来一个适当的&amp;部署之前的快速恢复机制。

答案 2 :(得分:0)

要确保迁移的行为符合您的要求,您应该在开发环境中进行试验。

运行命令

rake -T

向您显示可用的任务,例如

rake db:migrate

rake db:rollback

答案 3 :(得分:0)

每次迁移都在事务中运行。记在脑子里。这意味着如果在单个迁移中出现问题,则会回滚迁移(如果有任何后续操作,则不会执行迁移)。

要测试迁移,无论是up还是down我插入了很多puts语句,以检查所有工作应该是什么,然后在我的最后一行中我引发异常。这将使rails认为迁移失败,并且它将回滚操作(就好像它从未发生过一样)。

当我确定一切正常时,我删除了提升行并让迁移真正起作用。 在你的情况下,你将测试加注,删除加注,而不是再次运行它我假设:)

希望这有帮助。