我刚刚在我的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
答案 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
答案 1 :(得分:0)
如果只需索引数据库,请在迁移和设置数据库后立即尝试rails runner "<your rails console command here>"
。
答案 2 :(得分:0)
将以下内容添加到您的.travis.yml
services:
- elasticsearch
来源:https://docs.travis-ci.com/user/database-setup/#elasticsearch。
为我工作。