我正在使用Rails 3.2.12,RSpec-rails 2.13.0和ThinkingSphinx 3.0.10
问题:
当我运行bundle exec rpsec spec / controllers / ads_controller_spec.rb时,认为sphinx会产生3个被冻结的搜索进程,我的测试只会锁定,直到我手动杀死搜索进程,之后测试继续运行。
设置:
这是我的sphinx_env.rb文件,我在其中设置TS进行测试:
require 'thinking_sphinx/test'
def sphinx_environment(*tables, &block)
obj = self
begin
before(:all) do
obj.use_transactional_fixtures = false
ThinkingSphinx::Test.init
ThinkingSphinx::Test.start
sleep(0.5)
end
yield
ensure
after(:all) do
ThinkingSphinx::Test.stop
sleep(0.5)
obj.use_transactional_fixtures = true
end
end
end
这是我的测试脚本:
describe "GET index" do
before(:each) do
@web_origin = FactoryGirl.create(:origin)
@api_origin = FactoryGirl.create(:api_origin)
@first_ad = FactoryGirl.create(:ad, :origin_id => @web_origin.id)
ThinkingSphinx::Test.index #index ads created above
sleep 0.5
end
sphinx_environment :ads do
it 'should return a collection of all live ads' do
get :index, {:format => 'json'}
response.code.should == '200'
end
end
...
更新
没有取得任何进展,但是这里有一些额外的细节:
以下是test.searchd.log文件的输出:
[568] binlog:以0.006秒完成重播总计49次
[568]接受连接
[568]捕获了SIGHUP(无效= 1,在队列中= 1)
[568]旋转指数'ad_core':已启动
[568]捕获了SIGHUP(无效= 1,在队列中= 2)
[568]抓住了SIGTERM,关闭了
感谢任何帮助,我一直试图解决这个问题超过一天&有点失落。
感谢。
答案 0 :(得分:1)
我建议将Sphinx升级到2.0.6,我很确定应该解决这些问题。