Class: Woodhouse::MiddlewareStack

Inherits:
Array
  • Object
show all
Defined in:
lib/woodhouse/middleware_stack.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ MiddlewareStack

Returns a new instance of MiddlewareStack.



3
4
5
# File 'lib/woodhouse/middleware_stack.rb', line 3

def initialize(config)
  @config = config
end

Instance Method Details

#call(*args, &final) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/woodhouse/middleware_stack.rb', line 7

def call(*args, &final)
  stack = make_stack.dup
  next_step = lambda {|*args|
    next_item = stack.shift
    if next_item.nil?
      final.call(*args)
    else
      next_item.call(*args, &next_step)
    end
  }
  next_step.call(*args)
end