Class: DispatchRider::Callbacks::Access

Inherits:
Object
  • Object
show all
Defined in:
lib/dispatch-rider/callbacks/access.rb

Overview

Provides access for invoking callbacks.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(callbacks) ⇒ Access

Returns a new instance of Access.



7
8
9
# File 'lib/dispatch-rider/callbacks/access.rb', line 7

def initialize(callbacks)
  @callbacks = callbacks
end

Instance Attribute Details

#callbacksObject (readonly)

Returns the value of attribute callbacks.



5
6
7
# File 'lib/dispatch-rider/callbacks/access.rb', line 5

def callbacks
  @callbacks
end

Instance Method Details

#invoke(event, *args, &block) ⇒ Object

Executes the passed block wrapped in the event’s callbacks.

Parameters:

  • event (Symbol)
  • args (Array)
  • block (Proc)


15
16
17
18
19
20
21
22
23
# File 'lib/dispatch-rider/callbacks/access.rb', line 15

def invoke(event, *args, &block)
  stack_of_callbacks = callbacks.for(event).reverse

  block_with_callbacks = stack_of_callbacks.reduce(block) { |inner_block, outer_block|
    -> { outer_block.call(inner_block, *args) }
  }

  block_with_callbacks.call
end