Class: Chewy::Journal
Overview
A class to perform journal-related actions for the specified indexes/types.
Instance Method Summary collapse
-
#apply(since_time, retries: 10, **import_options) ⇒ Integer
Applies all changes that were done since the specified time to the specified indexes/types.
-
#clean(until_time = nil) ⇒ Hash
Cleans journal for the specified indexes/types.
-
#initialize(*only) ⇒ Journal
constructor
A new instance of Journal.
Constructor Details
#initialize(*only) ⇒ Journal
Returns a new instance of Journal.
11 12 13 |
# File 'lib/chewy/journal.rb', line 11 def initialize(*only) @only = only end |
Instance Method Details
#apply(since_time, retries: 10, **import_options) ⇒ Integer
Applies all changes that were done since the specified time to the specified indexes/types.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/chewy/journal.rb', line 21 def apply(since_time, retries: 10, **) stage = 1 since_time -= 1 count = 0 while stage <= retries entries = Chewy::Stash::Journal.entries(since_time, only: @only).to_a.presence or break count += entries.size groups = reference_groups(entries) ActiveSupport::Notifications.instrument 'apply_journal.chewy', stage: stage, groups: groups groups.each do |type, references| type.import(references, .merge(journal: false)) end stage += 1 since_time = entries.map(&:created_at).max end count end |