class Cadence::Middleware::Chain
Attributes
middleware[R]
Public Class Methods
new(entries = [])
click to toggle source
# File lib/cadence/middleware/chain.rb, line 4 def initialize(entries = []) @middleware = entries.map(&:init_middleware) end
Public Instance Methods
invoke(metadata) { || ... }
click to toggle source
# File lib/cadence/middleware/chain.rb, line 8 def invoke(metadata) result = nil chain = middleware.dup traverse_chain = lambda do if chain.empty? result = yield else chain.shift.call(metadata, &traverse_chain) end end traverse_chain.call result end