Module: Rage::Events::Subscriber
- Defined in:
- lib/rage/events/subscriber.rb
Overview
Include this module in a class to make it an event subscriber.
Example:
# Define an event class
MyEvent = Data.define
# Define the subscriber class
class MySubscriber
include Rage::Events::Subscriber
subscribe_to MyEvent
def call(event)
puts "Received event: #{event.inspect}"
end
end
# Publish an event
Rage::Events.publish(MyEvent.new)
When an event matching the specified class is published, the call method will be invoked with the event instance.
You can also subscribe to multiple event classes:
class MySubscriber
include Rage::Events::Subscriber
subscribe_to EventA, EventB
def call(event)
puts "Received event: #{event.inspect}"
end
end
Subscribers are executed synchronously by default. You can make a subscriber asynchronous by passing the deferred option:
class MySubscriber
include Rage::Events::Subscriber
subscribe_to MyEvent, deferred: true
def call(event)
puts "Received event in background: #{event.inspect}"
end
end
Such subscriber will be executed in the background using Rage’s deferred task system.
You can also define custom error handling for exceptions raised during event processing using rescue_from:
class MySubscriber
include Rage::Events::Subscriber
subscribe_to MyEvent
rescue_from StandardError do |exception|
puts "An error occurred: #{exception.}"
end
end
Defined Under Namespace
Modules: ClassMethods