class Dry::Events::Listener

Extension for objects that can listen to events

@example

class AppEvents
  include Dry::Events::Publisher[:app]

  register_event("users.created")
end

class MyListener
  include Dry::Events::Listener[:app]

  subscribe("users.created") do |event|
    # do something
  end
end

@api public

Attributes

id[R]

@!attribute [r] :id

@return [Symbol,String] The publisher identifier
@api private

Public Class Methods

[](id) click to toggle source

Create a listener extension for a specific publisher

@return [Module]

@api public

# File lib/dry/events/listener.rb, line 39
def self.[](id)
  new(id)
end
new(id) click to toggle source

@api private

# File lib/dry/events/listener.rb, line 44
def initialize(id)
  @id = id

  define_method(:subscribe) do |event_id, query = EMPTY_HASH, &block|
    Publisher.registry[id].subscribe(event_id, query, &block)
  end
end

Public Instance Methods

included(klass) click to toggle source

@api private

Calls superclass method
# File lib/dry/events/listener.rb, line 53
def included(klass)
  klass.extend(self)
  super
end