思考Sphinx 3.0.1如何在使用Rspec进行测试时关闭Delta索引

kak*_*bei 2 rspec thinking-sphinx

我默认为所有模型启用了Delta索引:

ThinkingSphinx::Index.define :book, :with => :active_record, :delta => (::Padrino.env == :production ? ThinkingSphinx::Deltas::SidekiqDelta : true) do
Run Code Online (Sandbox Code Playgroud)

我想转增量索引断开运行Rspec的时候(因为它需要较长时间的测试运行,我也得到了delta.spl文件无法访问的错误:FATAL: failed to open db/sphinx/test/book_delta.spl: No such file or directory, will not index. Try --rotate option.)

我试图在spec/support/sphinx.rb文件中将其设置为false,如在TS文档中所述:

config.before(:suite) do
    ThinkingSphinx::Test.init, suppress_delta_output: false
    ThinkingSphinx.deltas_enabled  = false # try to turn delta indexing off for the Controller and Model tests   
  end
Run Code Online (Sandbox Code Playgroud)

但是,对于每个插入新数据的测试,delta索引仍在进行,即使是插入Factory Girl工厂的数据也是如此.

将此行:ThinkingSphinx.deltas_enabled = false放入我的任何规范中会导致缺少方法错误:: undefined method对于ThinkingSphinx:模块,deltas_enabled ='

我怎么能把它关掉?

pat*_*pat 5

ThinkingSphinx.deltas_enabled设置适用于Thinking Sphinx v1/v2.

使用Thinking Sphinx v3(强烈建议您更新到最新版本3.0.3),您可以使用此命令来执行此操作:

ThinkingSphinx::Deltas.suspend!
Run Code Online (Sandbox Code Playgroud)

如果在某些时候你想重新打开它们,那么也有一种resume!方法.