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