Class: Stacko::Builder
- Inherits:
-
Object
- Object
- Stacko::Builder
- Defined in:
- lib/stacko/builder.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(default_app = nil, &block) ⇒ Builder
constructor
A new instance of Builder.
- #map(method_name, &block) ⇒ Object
- #run(app) ⇒ Object
- #to_app ⇒ Object
- #use(middleware, *args, &block) ⇒ Object
Constructor Details
#initialize(default_app = nil, &block) ⇒ Builder
Returns a new instance of Builder.
3 4 5 6 7 8 |
# File 'lib/stacko/builder.rb', line 3 def initialize(default_app = nil, &block) @run = default_app @use = [] @map = nil instance_eval(&block) if block_given? end |
Instance Method Details
#call(env) ⇒ Object
35 36 37 |
# File 'lib/stacko/builder.rb', line 35 def call(env) to_app.call(env) end |
#map(method_name, &block) ⇒ Object
23 24 25 26 |
# File 'lib/stacko/builder.rb', line 23 def map(method_name, &block) @map ||= {} @map[method_name] = block end |
#run(app) ⇒ Object
19 20 21 |
# File 'lib/stacko/builder.rb', line 19 def run(app) @run = app end |
#to_app ⇒ Object
28 29 30 31 32 33 |
# File 'lib/stacko/builder.rb', line 28 def to_app app = @map ? generate_map(@run, @map) : @run fail "missing run or map statement" unless app app = @use.reverse.inject(app) { |a,e| e[a] } app end |
#use(middleware, *args, &block) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/stacko/builder.rb', line 10 def use(middleware, *args, &block) if @map mapping = @map @map = nil @use << proc { |app| generate_map(app, mapping) } end @use << proc { |app| middleware.new(app, *args, &block) } end |