2

我刚刚在我的 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
4

3 回答 3

3

事实证明,我只需要将它添加到我的测试助手(在我的情况下为 spec_helper.rb),以便项目在每次测试时都得到“重新索引”:

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

于 2014-04-30T00:32:29.823 回答
0

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

于 2014-04-29T02:19:02.370 回答
0

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

services:
 - elasticsearch

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

为我工作。

于 2019-05-07T16:09:06.490 回答