Method: Messaging::Middleware.run

Defined in:
lib/messaging/middleware.rb

.run(middlewares, *args) ⇒ Object



3
4
5
6
7
8
9
10
11
12
# File 'lib/messaging/middleware.rb', line 3

def self.run(middlewares, *args)
  chain = Array(middlewares.dup)

  call_stack = lambda do
    return yield if chain.empty?

    chain.shift.call(*args, &call_stack)
  end
  call_stack.call
end