class Middlestack::Stack

Public Class Methods

new(default_app = nil, &block) click to toggle source
# File lib/middlestack/stack.rb, line 25
def initialize(default_app = nil, &block)
  @use, @run = [], default_app
  instance_eval(&block) if block_given?
end

Public Instance Methods

call(env) click to toggle source
# File lib/middlestack/stack.rb, line 40
def call(env)
  to_app.call(env)
end
to_app(app) click to toggle source
# File lib/middlestack/stack.rb, line 34
def to_app(app)
  app ||= @run
  fail 'missing run statement' unless app
  @use.reverse.inject(app){|a, e| e[a] }
end
use(middleware, *args, &block) click to toggle source
# File lib/middlestack/stack.rb, line 30
def use(middleware, *args, &block)
  @use << ->(app){ Proxy.new(middleware, app, *args, &block) }
end