Module: PubSubModelSync::PublisherConcern
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/pub_sub_model_sync/publisher_concern.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#ps_after_publish(_action, _payload) ⇒ Object
(also: #ps_after_sync)
after delivering data.
-
#ps_before_publish(_action, _payload) ⇒ Object
(also: #ps_before_sync)
before delivering data (return :cancel to cancel sync).
-
#ps_perform_publish(action = :create, parents_actions: false) ⇒ Object
Permits to perform manually the callback for a specific action.
-
#ps_publish(action, data: {}, mapping: [], headers: {}, as_klass: self.class.name) ⇒ Object
Delivers a notification via pubsub.
Instance Method Details
#ps_after_publish(_action, _payload) ⇒ Object Also known as: ps_after_sync
after delivering data
17 |
# File 'lib/pub_sub_model_sync/publisher_concern.rb', line 17 def ps_after_publish(_action, _payload); end |
#ps_before_publish(_action, _payload) ⇒ Object Also known as: ps_before_sync
before delivering data (return :cancel to cancel sync)
13 |
# File 'lib/pub_sub_model_sync/publisher_concern.rb', line 13 def ps_before_publish(_action, _payload); end |
#ps_perform_publish(action = :create, parents_actions: false) ⇒ Object
Permits to perform manually the callback for a specific action
41 42 43 44 45 46 47 |
# File 'lib/pub_sub_model_sync/publisher_concern.rb', line 41 def ps_perform_publish(action = :create, parents_actions: false) callbacks = self.class.ps_cache_publish_callbacks callbacks = self.class.ancestors.map { |p| p.try(:ps_cache_publish_callbacks) }.compact.flatten if parents_actions items = callbacks.select { |item| item[:actions].include?(action) } items.each { |item| instance_exec(action, &item[:callback]) } self end |
#ps_publish(action, data: {}, mapping: [], headers: {}, as_klass: self.class.name) ⇒ Object
Delivers a notification via pubsub
33 34 35 36 |
# File 'lib/pub_sub_model_sync/publisher_concern.rb', line 33 def ps_publish(action, data: {}, mapping: [], headers: {}, as_klass: self.class.name) p_klass = PubSubModelSync::MessagePublisher p_klass.publish_model(self, action, data: data, mapping: mapping, headers: headers, as_klass: as_klass) end |