Module: Spree::Event::Subscriber
- Included in:
- MailerSubscriber
- Defined in:
- lib/spree/event/subscriber.rb
Overview
This module simplifies adding and removing subscriptions to Spree::Event events. Here's a complete example:
module EmailSender
include Spree::Event::Subscriber
event_action :order_finalized
event_action :confirm_reimbursement, event_name: :reimbursement_reimbursed
def order_finalized(event)
Mailer.send_email(event.payload[:order])
end
def confirm_reimbursement(event)
Mailer.send_email(event.payload[:reimbursement])
end
end
# Optional, required only when the subscriber needs to be loaded manually.
#
# If Spree::Config.events.autoload_subscribers is set to `true` and the module
# file matches the pattern `app/subscribers/**/*_subscriber.rb` then it will
# be loaded automatically at boot and this line can be removed:
EmailSender.activate
Class Method Summary collapse
Instance Method Summary collapse
-
#activate ⇒ Object
Activates all declared event actions to their events.
-
#deactivate(event_action_name = nil) ⇒ Object
Deactivates all declared event actions (or a single specific one) from their events.
-
#event_action(method_name, event_name: nil) ⇒ Object
Declares a method name in the including module that can be subscribed/unsubscribed to an event.
Class Method Details
.included(base) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/spree/event/subscriber.rb', line 29 def self.included(base) base.extend base base.mattr_accessor :event_actions base.event_actions = {} Spree::Event.subscriber_registry.register(base) end |
Instance Method Details
#activate ⇒ Object
Activates all declared event actions to their events. Only actions that are activated will be called when their event fires.
70 71 72 |
# File 'lib/spree/event/subscriber.rb', line 70 def activate Spree::Event.subscriber_registry.activate_subscriber(self) end |
#deactivate(event_action_name = nil) ⇒ Object
Deactivates all declared event actions (or a single specific one) from their events. This means that when an event fires then none of its unsubscribed event actions will be called.
81 82 83 |
# File 'lib/spree/event/subscriber.rb', line 81 def deactivate(event_action_name = nil) Spree::Event.subscriber_registry.deactivate_subscriber(self, event_action_name) end |
#event_action(method_name, event_name: nil) ⇒ Object
Declares a method name in the including module that can be subscribed/unsubscribed to an event.
61 62 63 |
# File 'lib/spree/event/subscriber.rb', line 61 def event_action(method_name, event_name: nil) event_actions[method_name] = (event_name || method_name).to_s end |