Class: Chewy::Strategy::Atomic
- Defined in:
- lib/chewy/strategy/atomic.rb
Overview
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
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize ⇒ Atomic
constructor
A new instance of Atomic.
- #leave ⇒ Object
- #update(type, objects, _options = {}) ⇒ Object
Methods inherited from Base
Constructor Details
#initialize ⇒ Atomic
Returns a new instance of Atomic.
15 16 17 |
# File 'lib/chewy/strategy/atomic.rb', line 15 def initialize @stash = {} end |
Instance Method Details
#leave ⇒ Object
24 25 26 |
# File 'lib/chewy/strategy/atomic.rb', line 24 def leave @stash.all? { |type, ids| type.import!(ids) } end |
#update(type, objects, _options = {}) ⇒ Object
19 20 21 22 |
# File 'lib/chewy/strategy/atomic.rb', line 19 def update(type, objects, = {}) @stash[type] ||= [] @stash[type] |= type.root.id ? Array.wrap(objects) : type.adapter.identify(objects) end |