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 に答える