module Announce::Subscriber
Public Class Methods
included(base)
click to toggle source
# File lib/announce/subscriber.rb, line 3 def self.included(base) base.class_eval { attr_accessor :subject, :action, :message } base.extend(ClassMethods) end
Public Instance Methods
delegate_event(event)
click to toggle source
For use in adapters to delegate to method named receive_subject_action
# File lib/announce/subscriber.rb, line 20 def delegate_event(event) @message = event.deep_symbolize_keys @subject = message[:subject] @action = message[:action] if [message, subject, action].any?(&:nil?) raise "Missing message, subject, or action for '#{event.inspect}'" end if respond_to?(delegate_method) public_send(delegate_method, message[:body]) else raise "`#{self.class.name}` subscribed, but doesn't implement " \ "`#{delegate_method}` for '#{event.inspect}'" end end
delegate_method(message = @message)
click to toggle source
# File lib/announce/subscriber.rb, line 37 def delegate_method(message = @message) ["receive", message[:subject], message[:action]].join("_") end
perform(*args)
click to toggle source
# File lib/announce/subscriber.rb, line 15 def perform(*args) delegate_event(*args) end