Module: PubSubModelSync::PublisherConcern::ClassMethods
- Defined in:
- lib/pub_sub_model_sync/publisher_concern.rb
Instance Method Summary collapse
- #ps_after_action(crud_actions, method_name = nil, &block) ⇒ Object
- #ps_cache_publish_callbacks(new_value = nil) ⇒ Object
-
#ps_class_publish(data, action:, as_klass: nil, headers: {}) ⇒ Object
Publishes a class level notification via pubsub.
Instance Method Details
#ps_after_action(crud_actions, method_name = nil, &block) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/pub_sub_model_sync/publisher_concern.rb', line 62 def ps_after_action(crud_actions, method_name = nil, &block) actions = Array(crud_actions).map(&:to_sym) callback = ->(action) { method_name ? send(method_name, action) : instance_exec(action, &block) } ps_cache_publish_callbacks({ actions: actions, callback: callback }) actions.each do |action| if action == :destroy after_destroy { instance_exec(action, &callback) } else send(:after_commit, on: action) { instance_exec(action, &callback) } end end end |
#ps_cache_publish_callbacks(new_value = nil) ⇒ Object
75 76 77 78 79 |
# File 'lib/pub_sub_model_sync/publisher_concern.rb', line 75 def ps_cache_publish_callbacks(new_value = nil) @ps_cache_publish_callbacks ||= [] @ps_cache_publish_callbacks << new_value if new_value @ps_cache_publish_callbacks end |
#ps_class_publish(data, action:, as_klass: nil, headers: {}) ⇒ Object
Publishes a class level notification via pubsub
55 56 57 58 |
# File 'lib/pub_sub_model_sync/publisher_concern.rb', line 55 def ps_class_publish(data, action:, as_klass: nil, headers: {}) klass = PubSubModelSync::MessagePublisher klass.publish_data((as_klass || name).to_s, data, action.to_sym, headers: headers) end |