module Announce::Subscriber
Public Class Methods
included(base)
click to toggle source
# File lib/announce/subscriber.rb, line 4 def self.included(base) base.class_eval do attr_accessor :subject, :action, :message end 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 23 def delegate_event(event) @message = event.deep_symbolize_keys @subject = message[:subject] @action = message[:action] if [message, subject, action].any? { |a| a.nil? } raise "Message, subject, and action are not all specified for '#{event.inspect}'" end if respond_to?(delegate_method) public_send(delegate_method, message[:body]) else raise "`#{self.class.name}` is 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 39 def delegate_method(message = @message) ['receive', message[:subject], message[:action]].join('_') end
perform(*args)
click to toggle source
# File lib/announce/subscriber.rb, line 18 def perform(*args) delegate_event(*args) end