ThinkingSphinx не возвращает результатов в тестовом режиме в Cucumber - PullRequest
2 голосов
/ 30 июля 2011

Я работаю над проектом обновления с Rails 2 -> 3. Мы удаляем Ultrasphinx (который не поддерживается в Rails 3) и заменяем его ThinkingSphinx.Одна проблема - тесты Cucumber для поиска, которые использовал для работы, не работают, поскольку ThinkingSphinx не индексирует файлы в тестовом режиме.

Это релевантная часть env.rb:

require 'cucumber/thinking_sphinx/external_world'
Cucumber::ThinkingSphinx::ExternalWorld.new
Cucumber::Rails::World.use_transactional_fixtures = false

И вот шаг (объявленный в моем файле common_steps.rb), который индексирует мои объекты:

Given /^ThinkingSphinx is indexed$/ do
  puts "Indexing the new database objects"
  # Update all indexes
  ThinkingSphinx::Test.index
  sleep(0.25) # Wait for Sphinx to catch up
end

И это то, что у меня есть в моем файле .feature (послеобъекты модели созданы)

And ThinkingSphinx is indexed

Это вывод ThinkingSphinx, когда он запускается в тестовом режиме (это НЕПРАВИЛЬНО, он должен находить документы, но это не так)

Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-2009, Andrew Aksyonoff

using config file 'C:/Users/PaulG/Programming/Projects/TechTV/config/test.sphinx.conf'...
indexing index 'collection_core'...
collected 0 docs, 0.0 MB
total 0 docs, 0 bytes
total 0.027 sec, 0 bytes/sec, 0.00 docs/sec
distributed index 'collection' can not be directly indexed; skipping.
indexing index 'video_core'...
collected 0 docs, 0.0 MB
total 0 docs, 0 bytes
total 0.018 sec, 0 bytes/sec, 0.00 docs/sec
distributed index 'video' can not be directly indexed; skipping.
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 8 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
rotating indices: succesfully sent SIGHUP to searchd (pid=4332).

Для сравнения, это вывод, который я получаю при запуске

rake ts:index

Для индексации среды разработки:

Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-2009, Andrew Aksyonoff

using config file 'C:/Users/PaulG/Programming/Projects/TechTV/config/development.sphinx.conf'...
indexing index 'collection_core'...
collected 4 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 4 docs, 39 bytes
total 0.031 sec, 1238 bytes/sec, 127.04 docs/sec
distributed index 'collection' can not be directly indexed; skipping.
indexing index 'video_core'...
collected 4 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 4 docs, 62 bytes
total 0.023 sec, 2614 bytes/sec, 168.66 docs/sec
distributed index 'video' can not be directly indexed; skipping.
total 10 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 20 writes, 0.001 sec, 0.1 kb/call avg, 0.0 msec/call avg
rotating indices: succesfully sent SIGHUP to searchd (pid=5476).

Обратите внимание, как на самом деле он находит документы в моей базе данных разработки, но не в моейтестовая база данных.Индексатор работает в dev, но не тестирует?Я потратил 2 дня на это, и я не ближе к решению.Любая помощь будет оценена в подавляющем большинстве случаев.

1 Ответ

4 голосов
/ 02 августа 2011

Я понял это сегодня утром, надеюсь, я смогу спасти кого-то еще от проблем, с которыми я столкнулся.Похоже, это не ошибка Cucumber, а DatabaseCleaner .

Я исправил эту проблему, изменив эту строку в env.rb :

DatabaseCleaner.strategy = :transaction

до

DatabaseCleaner.strategy = :truncation
...