Module: Atr::Publishable::ClassMethods

Defined in:
lib/atr/publishable.rb

Instance Method Summary collapse

Instance Method Details

#build_publication_scope_for_record(record) ⇒ Object



78
79
80
81
82
83
84
# File 'lib/atr/publishable.rb', line 78

def build_publication_scope_for_record(record)
  publication_scopes.map do |arg|
    key = arg.to_s.split("_id").first
    value = record.__send__(arg)
    [key, value]
  end.try(:flatten)
end

#build_routing_key_for_record_action(record, action_routing_key) ⇒ Object



73
74
75
76
# File 'lib/atr/publishable.rb', line 73

def build_routing_key_for_record_action(record, action_routing_key)
  publication_scope_routing_keys = build_publication_scope_for_record(record)
  [publication_scope_routing_keys, resource_routing_keys, action_routing_key].flatten.join(".")
end

#publication_scope(*args) ⇒ Object



86
87
88
# File 'lib/atr/publishable.rb', line 86

def publication_scope(*args)
  self.publication_scopes = args
end

#publishable_actions(*actions) ⇒ Object



53
54
55
# File 'lib/atr/publishable.rb', line 53

def publishable_actions(*actions)
  @publishable_actions = actions
end

#resource_action_routing_key(action_routing_key) ⇒ Object



69
70
71
# File 'lib/atr/publishable.rb', line 69

def resource_action_routing_key(action_routing_key)
  resource_action_routing_keys(action_routing_key).join(".")
end

#resource_action_routing_keys(action_routing_key) ⇒ Object



65
66
67
# File 'lib/atr/publishable.rb', line 65

def resource_action_routing_keys(action_routing_key)
  [resource_routing_keys, action_routing_key]
end

#resource_routing_keysObject



61
62
63
# File 'lib/atr/publishable.rb', line 61

def resource_routing_keys
  name.split("::").map(&:underscore)
end

#routing_keyObject



57
58
59
# File 'lib/atr/publishable.rb', line 57

def routing_key
  resource_routing_keys.join(".")
end

#scope_publication?Boolean

Returns:

  • (Boolean)


90
91
92
# File 'lib/atr/publishable.rb', line 90

def scope_publication?
  publication_scopes.present?
end