Class: Stacko::Builder
- Inherits:
-
Object
- Object
- Stacko::Builder
- Defined in:
- lib/stacko/builder.rb
Class Method Summary collapse
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.
7 8 9 10 11 12 |
# File 'lib/stacko/builder.rb', line 7 def initialize(default_app = nil, &block) @run = default_app @use = [] @map = nil instance_eval(&block) if block_given? end |
Class Method Details
.app(default_app = nil, &block) ⇒ Object
3 4 5 |
# File 'lib/stacko/builder.rb', line 3 def self.app(default_app = nil, &block) self.new(default_app, &block).to_app end |
Instance Method Details
#call(env) ⇒ Object
39 40 41 |
# File 'lib/stacko/builder.rb', line 39 def call(env) to_app.call(env) end |
#map(method_name, &block) ⇒ Object
27 28 29 30 |
# File 'lib/stacko/builder.rb', line 27 def map(method_name, &block) @map ||= {} @map[method_name] = block end |
#run(app) ⇒ Object
23 24 25 |
# File 'lib/stacko/builder.rb', line 23 def run(app) @run = app end |
#to_app ⇒ Object
32 33 34 35 36 37 |
# File 'lib/stacko/builder.rb', line 32 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
14 15 16 17 18 19 20 21 |
# File 'lib/stacko/builder.rb', line 14 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 |