Class: SyncMachine::FindSubjectsWorker
- Inherits:
-
Object
- Object
- SyncMachine::FindSubjectsWorker
- Includes:
- Sidekiq::Worker
- Defined in:
- lib/sync_machine/find_subjects_worker.rb
Overview
After one observed model has changed, find all relevant subjects whose documents may have changed. Enqueues one EnsurePublicationWorker job for each relevant subject.
Defined Under Namespace
Classes: Hook
Class Method Summary collapse
- .inherited(subclass) ⇒ Object
- .method_missing(meth, *args, &block) ⇒ Object
- .perform_async_for_record(record) ⇒ Object
Instance Method Summary collapse
-
#perform(record_class_name, record_id, changed_keys, enqueue_time_str) ⇒ Object
:reek:LongParameterList is unavoidable here since this is a Sidekiq worker.
Class Method Details
.inherited(subclass) ⇒ Object
18 19 20 |
# File 'lib/sync_machine/find_subjects_worker.rb', line 18 def self.inherited(subclass) subclass.hooks = {} end |
.method_missing(meth, *args, &block) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/sync_machine/find_subjects_worker.rb', line 22 def self.method_missing(meth, *args, &block) if meth.to_s == "subject_ids_from_#{parent.subject_sym}" block ||= ->(subject) { [subject.id.to_s] } add_hook(meth, block) elsif meth.to_s =~ /^subject_ids_from_.*/ add_hook(meth, block) else super end end |
.perform_async_for_record(record) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/sync_machine/find_subjects_worker.rb', line 33 def self.perform_async_for_record(record) sync_module = SyncMachine.sync_module(self) orm_adapter = sync_module.orm_adapter record_id_for_job = orm_adapter.record_id_for_job(record.id) changed_keys = orm_adapter.change_listener_changed_keys(record) perform_async( record.class.name, record_id_for_job, changed_keys, Time.now.to_json ) end |
Instance Method Details
#perform(record_class_name, record_id, changed_keys, enqueue_time_str) ⇒ Object
:reek:LongParameterList is unavoidable here since this is a Sidekiq worker
45 46 47 48 49 50 51 52 53 |
# File 'lib/sync_machine/find_subjects_worker.rb', line 45 def perform(record_class_name, record_id, changed_keys, enqueue_time_str) record = record_class_name.constantize.find(record_id) source_ids = find_source_ids(record, changed_keys) (source_ids || []).each do |source_id| self.class.parent.const_get('EnsurePublicationWorker').perform_async( source_id, enqueue_time_str ) end end |