module PubSubModelSync::SubscriberConcern::ClassMethods

Public Instance Methods

ps_class_subscribe(action, settings = {}, &block) click to toggle source

@param action (Symbol) Notification.action name @param settings (Hash) @refer ps_subscribe.settings except(:id)

# File lib/pub_sub_model_sync/subscriber_concern.rb, line 31
def ps_class_subscribe(action, settings = {}, &block)
  settings[:to_action] ||= block if block
  add_ps_subscriber(action, nil, settings.merge(mode: :klass))
end
ps_subscribe(actions, mapping = [], settings = {}, &block) click to toggle source

@param actions (Symbol,Array<Symbol>) Notification.action name: save|create|update|destroy|<any_other_action> @param mapping (Array<String,Symbol>) Attributes mapping with aliasing support, sample: [“id”, “full_name:name”] @param settings (Hash<:from_klass, :to_action, :id, :if, :unless>)

from_klass (String) Notification.class name
to_action (Symbol,Proc):
  Symbol: Method to process the notification
  Proc: Block to process the notification
id (Symbol,Array<Symbol,String>) attribute(s) DB primary identifier(s). Supports for mapping format.
if (Symbol,Proc,Array<Symbol>) Method or block called as the conformation before calling the callback
unless (Symbol,Proc,Array<Symbol>) Method or block called as the negation before calling the callback
# File lib/pub_sub_model_sync/subscriber_concern.rb, line 22
def ps_subscribe(actions, mapping = [], settings = {}, &block)
  settings[:to_action] ||= block if block
  Array(actions).map do |action|
    add_ps_subscriber(action, mapping, settings)
  end
end

Private Instance Methods

add_ps_subscriber(action, mapping, settings = {}) click to toggle source

@param settings (Hash): refer to PubSubModelSync::Subscriber.settings

# File lib/pub_sub_model_sync/subscriber_concern.rb, line 39
def add_ps_subscriber(action, mapping, settings = {})
  klass = PubSubModelSync::Subscriber
  subscriber = klass.new(name, action, mapping: mapping, settings: settings)
  PubSubModelSync::Config.subscribers.push(subscriber) && subscriber
end