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

时间:2013-05-27 14:07:03

标签: rspec thinking-sphinx

默认情况下,我的所有模型都启用了Delta索引:

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

我想在运行Rspec时关闭delta索引(因为运行测试需要更长的时间,而且我还会收到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

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

将此行:ThinkingSphinx.deltas_enabled = false放入我的任何规范中会导致方法丢失错误:: undefined method deltas_enabled ='for ThinkingSphinx:Module`

如何关闭它?

1 个答案:

答案 0 :(得分:5)

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

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

ThinkingSphinx::Deltas.suspend!

如果您想在某些时候重新打开它们,那么还有一个resume!方法。