最近切换到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
,但我想知道我做错了什么。
答案 0 :(得分:0)
我认为db:test:prepare
不打算在TEST环境中运行(否则你可以自己运行db:schema:load
)。通常,您将在开发环境中运行db:test:prepare
。检查挂起的迁移是非常有用的(您将知道您的同事是否在运行之前提交了一些新的迁移并且未通过一系列测试)。由于运行测试运行db:test:prepare
无论如何,您应该很少需要手动运行(当然不适用于您的CI版本)。省略对db:test:prepare
的调用。