Jenkins Rspec测试抱怨未决的迁移?

时间:2014-01-30 23:32:02

标签: ruby-on-rails rspec jenkins

我正在尝试设置Jenkins自动作业以在部署之前运行我的Rspec测试。目标是在没有运行时数据库的情况下在远程服务器上运行测试套件。

我正在使用rake插件并具有以下命令,(请记住,这些都是rake自动添加的前提)

db:test:prepare RAILS_ENV=test

ci:setup:rspec spec RAILS_ENV=test

这在我的一个项目中运行良好,但另一个抱怨待定迁移。我的工作输出如下,

[Dev portal-admin tests] $ /var/lib/jenkins/.rvm/gems/ruby-2.0.0-p353/bin/rake db:test:prepare RAILS_ENV=test
[Dev portal-admin tests] $ /var/lib/jenkins/.rvm/gems/ruby-2.0.0-p353/bin/rake ci:setup:rspec spec RAILS_ENV=test
rm -rf spec/reports
Run `rake db:migrate` to update your database then try again.
You have 16 pending migrations:
  20131219204223 DeviseCreateUsers
  20131219205648 DeviseInvitableAddToUsers
  etc

据我所知,db:test:prepare应该从scheme.rb加载数据库方案,所以我应该善于迁移。我也不明白为什么它在我进入Rspec步骤之后抱怨,而不是第一次测试:准备步骤。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我相信您的第一个佣金任务db:test:prepare无异议地从现有schema.rb文件中加载数据库,因为它不要求迁移是最新的。

我怀疑你后续的ci:setup:rspec rake任务依赖于test:prepare依赖于db:abort_if_pending_migrations,导致你看到的中止。

对于Rails 4,至少请参阅gems目录中的activerecord-4.0.0/lib/active_record/railties/databases.rake,了解这些rake任务定义的详细信息。