Class: Walle::Middlewares::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/walle/middlewares/builder.rb

Defined Under Namespace

Classes: Proxy

Instance Method Summary collapse

Constructor Details

#initialize(default_app = nil, &block) ⇒ Builder

Returns a new instance of Builder.



26
27
28
29
# File 'lib/walle/middlewares/builder.rb', line 26

def initialize(default_app = nil, &block)
  @use, @run = [], default_app
  instance_eval(&block) if block_given?
end

Instance Method Details

#call(env) ⇒ Object



41
42
43
# File 'lib/walle/middlewares/builder.rb', line 41

def call(env)
  to_app.call(env)
end

#to_app(app) ⇒ Object



35
36
37
38
39
# File 'lib/walle/middlewares/builder.rb', line 35

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) ⇒ Object



31
32
33
# File 'lib/walle/middlewares/builder.rb', line 31

def use(middleware, *args, &block)
  @use << ->(app){ Proxy.new(middleware, app, *args, &block) }
end