Class: SyncMachine::ChangeListener
- Inherits:
-
Object
- Object
- SyncMachine::ChangeListener
- Defined in:
- lib/sync_machine/change_listener.rb
Overview
Listen to changes in any model that could result in a change to the published document, and enqueue a FindSubjectsWorker job when the change occurs.
Class Method Summary collapse
- .define_method_matching_wisper_event(event) ⇒ Object
- .inherited(base) ⇒ Object
- .listen_to_models(*model_syms) ⇒ Object
- .listen_to_wisper_events(*events) ⇒ Object
- .subscribe ⇒ Object
Instance Method Summary collapse
Class Method Details
.define_method_matching_wisper_event(event) ⇒ Object
16 17 18 19 20 |
# File 'lib/sync_machine/change_listener.rb', line 16 def self.define_method_matching_wisper_event(event) define_method(event) do |subject| find_subjects_async(subject) end end |
.inherited(base) ⇒ Object
10 11 12 13 14 |
# File 'lib/sync_machine/change_listener.rb', line 10 def self.inherited(base) base.cattr_accessor :model_syms do [] end end |
.listen_to_models(*model_syms) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/sync_machine/change_listener.rb', line 22 def self.listen_to_models(*model_syms) self.model_syms = model_syms model_syms.each do |model_sym| send( :alias_method, "update_#{model_sym}_successful".to_sym, :after_record_saved ) end end |
.listen_to_wisper_events(*events) ⇒ Object
33 34 35 36 37 |
# File 'lib/sync_machine/change_listener.rb', line 33 def self.listen_to_wisper_events(*events) events.each do |event| define_method_matching_wisper_event(event) end end |
.subscribe ⇒ Object
39 40 41 |
# File 'lib/sync_machine/change_listener.rb', line 39 def self.subscribe Wisper.subscribe(new) end |
Instance Method Details
#after_create(record) ⇒ Object
43 44 45 46 47 |
# File 'lib/sync_machine/change_listener.rb', line 43 def after_create(record) model_sym = record.class.name.underscore.to_sym return unless self.class.model_syms.include?(model_sym) after_record_saved(record) end |
#after_record_saved(record) ⇒ Object
49 50 51 52 |
# File 'lib/sync_machine/change_listener.rb', line 49 def after_record_saved(record) return unless orm_adapter.sufficient_changes_to_find_subjects?(record) find_subjects_async(record) end |