class Chewy::Strategy::Atomic
This strategy accumulates all the objects prepared for indexing and fires index process when strategy is popped from the strategies stack.
Chewy.strategy(:atomic) do User.all.map(&:save) # Does nothing here Post.all.map(&:save) # And here # It imports all the changed users and posts right here # before block leaving with bulk ES API, kinda optimization end
Public Class Methods
new()
click to toggle source
# File lib/chewy/strategy/atomic.rb, line 15 def initialize @stash = {} end
Public Instance Methods
leave()
click to toggle source
# File lib/chewy/strategy/atomic.rb, line 24 def leave @stash.all? { |type, ids| type.import!(ids) } end
update(type, objects, _options = {})
click to toggle source
# File lib/chewy/strategy/atomic.rb, line 19 def update(type, objects, _options = {}) @stash[type] ||= [] @stash[type] |= type.root.id ? Array.wrap(objects) : type.adapter.identify(objects) end