class Eventboss::Middleware::Chain

Attributes

entries[R]

Public Class Methods

new() click to toggle source
# File lib/eventboss/middleware.rb, line 6
def initialize
  @entries = []
end

Public Instance Methods

add(klass, options = {}) click to toggle source
# File lib/eventboss/middleware.rb, line 10
def add(klass, options = {})
  @entries << Entry.new(klass, options)
end
clear() click to toggle source
# File lib/eventboss/middleware.rb, line 27
def clear
  @entries.clear
end
invoke(*args) { || ... } click to toggle source
# File lib/eventboss/middleware.rb, line 14
def invoke(*args)
  chain = @entries.map(&:build).reverse!

  invoke_lambda = lambda do
    if (mid = chain.pop)
      mid.call(*args, &invoke_lambda)
    else
      yield
    end
  end
  invoke_lambda.call
end