ThinkingSphinx实时索引+RSpec无头Chrome测试启动失败排查
解决方案
问题根源:实时索引不需要通过indexer命令构建索引——实时索引的数据会直接写入Sphinx服务,而ThinkingSphinx::Test.start默认会调用indexer,这对实时索引完全多余,因此报错。
修改sphinx_helper.rb,跳过索引构建步骤,直接启动Sphinx服务:
方案一:使用start方法并传入参数
RSpec.configure do |config| config.before(:suite) do ThinkingSphinx::Test.stop ThinkingSphinx::Test.start(disable_indexing: true) end config.after(:suite) do ThinkingSphinx::Test.stop end config.after(:each) do ThinkingSphinx::Test.clear end end
方案二:使用start_with_autostop方法并传入参数
RSpec.configure do |config| config.before(:suite) do ThinkingSphinx::Test.start_with_autostop(disable_indexing: true) end config.after(:each) do ThinkingSphinx::Test.clear end end
关键说明
disable_indexing: true:跳过调用indexer的步骤,直接启动searchd服务,适配实时索引的工作模式。ThinkingSphinx::Test.clear:每个测试用例后清空索引数据,避免测试间的数据污染。- 实时索引会通过ActiveRecord回调自动同步数据到Sphinx,测试中创建/修改记录后无需手动调用索引更新。
内容的提问来源于stack exchange,提问作者ChildrenofkoRn
相关产品推荐
相关产品推荐

