默认情况下,我的所有模型都启用了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`
如何关闭它?
答案 0 :(得分:5)
ThinkingSphinx.deltas_enabled
设置适用于Thinking Sphinx v1 / v2。
使用Thinking Sphinx v3(我强烈建议您更新到最新版本3.0.3),您可以使用此命令来执行此操作:
ThinkingSphinx::Deltas.suspend!
如果您想在某些时候重新打开它们,那么还有一个resume!
方法。