rails 3.1 db:test:准备和“待定迁移”问题

时间:2011-07-14 04:08:45

标签: ruby-on-rails ruby unit-testing migration

最近切换到Rails 3.1.0.rc4,我无法运行CI构建。它归结为以下简化案例:

-bash-3.2$ echo $RAILS_ENV
test
-bash-3.2$ bundle exec rake db:drop db:create db:test:prepare
You have 21 pending migrations:
  20100628174219 InitialSchema
  20100706175001 AddCompanyToClassifieds
  20100720132917 CartItemActionMigration
  20100811192506 AddJobTitleToDirectoryListings
  ...

如果我用bundle exec rake db:drop db:create db:migrate db:test:prepare替换该命令,它可以正常工作。

在深入挖掘核心db:test:prepare任务时,db:abort_if_pending_migrations为先决条件。

现在我只是错过了一些明显的东西,还是完全没有意义?运行db:test:prepare(在标准情况下)调用执行schema.rb的db:schema:load - 其整点是加载架构而不运行所有迁移。除非所有迁移都在执行(因此在db:migrate之前强制db:test:prepare),否则无法运行,它是否会使自己完全没用?

我想我可以在我的CI构建过程中添加额外的db:migrate,但我想知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

我认为db:test:prepare不打算在TEST环境中运行(否则你可以自己运行db:schema:load)。通常,您将在开发环境中运行db:test:prepare。检查挂起的迁移是非常有用的(您将知道您的同事是否在运行之前提交了一些新的迁移并且未通过一系列测试)。由于运行测试运行db:test:prepare 无论如何,您应该很少需要手动运行(当然不适用于您的CI版本)。省略对db:test:prepare的调用。