Module: Announce::Subscriber
- Defined in:
- lib/announce/subscriber.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#delegate_event(event) ⇒ Object
For use in adapters to delegate to method named receive_subject_action.
- #delegate_method(message = @message) ⇒ Object
- #perform(*args) ⇒ Object
Class Method Details
.included(base) ⇒ Object
3 4 5 6 7 |
# File 'lib/announce/subscriber.rb', line 3 def self.included(base) base.class_eval { attr_accessor :subject, :action, :message } base.extend(ClassMethods) end |
Instance Method Details
#delegate_event(event) ⇒ Object
For use in adapters to delegate to method named receive_subject_action
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/announce/subscriber.rb', line 20 def delegate_event(event) @message = event.deep_symbolize_keys @subject = [:subject] @action = [:action] if [, subject, action].any?(&:nil?) raise "Missing message, subject, or action for '#{event.inspect}'" end if respond_to?(delegate_method) public_send(delegate_method, [:body]) else raise "`#{self.class.name}` subscribed, but doesn't implement " \ "`#{delegate_method}` for '#{event.inspect}'" end end |
#delegate_method(message = @message) ⇒ Object
37 38 39 |
# File 'lib/announce/subscriber.rb', line 37 def delegate_method( = @message) ["receive", [:subject], [:action]].join("_") end |
#perform(*args) ⇒ Object
15 16 17 |
# File 'lib/announce/subscriber.rb', line 15 def perform(*args) delegate_event(*args) end |