Searchkick在Travis CI上失败了

时间:2014-04-28 12:22:24

标签: ruby-on-rails ruby-on-rails-4 elasticsearch travis-ci searchkick

我刚刚在我的Rails 4.1应用程序上集成了Searchkick,而我的Travis CI构建失败了。我通过在.travis.yml中添加elasticsearch服务解决了第一次失败,但是“重新索引”模型的命令必须通过Rails控制台完成,这就是失败:

Failure/Error: Unable to find matching line from backtrace
     RuntimeError:
       Index missing - run Item.reindex

那么如何通过在Travis CI中发布“Model.reindex”来索引模型?

这是我的.travis.yml文件:

language: ruby
rvm:
  - 2.0.0-p247
env:
  - DB=sqlite
  - DB=mysql
  - DB=postgresql
services:
  - elasticsearch
script:
  - RAILS_ENV=test bundle exec rake db:migrate --trace
  - bundle exec rake db:test:prepare
  - bundle exec rspec spec/
before_script:
  - mysql -e 'create database mbb_test'
  - psql -c 'create database mbb_test;' -U postgres
bundler_args: --binstubs=./bundler_stubs

3 个答案:

答案 0 :(得分:3)

结果我只需要将它添加到我的测试助手(在我的情况下为spec_helper.rb)中,以便项目得到"重新索引" -ed每次测试:

config.before(:each) do
  Item.reindex
end

更好的版本

config.before(:each, es: true) do
    if Item.searchkick_index.exists?
      Item.searchkick_index.delete
      Item.reindex
    end
  end

取自: https://github.com/ankane/searchkick/pull/95

答案 1 :(得分:0)

如果只需索引数据库,请在迁移和设置数据库后立即尝试rails runner "<your rails console command here>"

答案 2 :(得分:0)

将以下内容添加到您的.travis.yml

services:
 - elasticsearch

来源:https://docs.travis-ci.com/user/database-setup/#elasticsearch

为我工作。