Class: Volt::MiddlewareStack
- Defined in:
- lib/volt/server/middleware/middleware_stack.rb
Instance Attribute Summary collapse
-
#middlewares ⇒ Object
readonly
Returns the value of attribute middlewares.
Instance Method Summary collapse
-
#build ⇒ Object
Builds a new Rack::Builder with the middleware and the app.
- #call(env) ⇒ Object
-
#initialize ⇒ MiddlewareStack
constructor
A new instance of MiddlewareStack.
- #map(path, &block) ⇒ Object
- #run(app) ⇒ Object
-
#use(*args, &block) ⇒ Object
Set the app that gets called after the middleware runs def set_app(app) @app = app end.
Constructor Details
#initialize ⇒ MiddlewareStack
Returns a new instance of MiddlewareStack.
9 10 11 12 13 |
# File 'lib/volt/server/middleware/middleware_stack.rb', line 9 def initialize # Setup the next app @middlewares = [] @maps = [] end |
Instance Attribute Details
#middlewares ⇒ Object (readonly)
Returns the value of attribute middlewares.
7 8 9 |
# File 'lib/volt/server/middleware/middleware_stack.rb', line 7 def middlewares @middlewares end |
Instance Method Details
#build ⇒ Object
Builds a new Rack::Builder with the middleware and the app
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/volt/server/middleware/middleware_stack.rb', line 36 def build @builder = Rack::Builder.new @maps.each do |path, block| @builder.map(path, &block) end @middlewares.each do |middleware| @builder.use(*middleware[0], &middleware[1]) end @builder.run(@app) end |
#call(env) ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/volt/server/middleware/middleware_stack.rb', line 50 def call(env) unless @builder build end @builder.call(env) end |
#map(path, &block) ⇒ Object
27 28 29 |
# File 'lib/volt/server/middleware/middleware_stack.rb', line 27 def map(path, &block) @maps << [path, block] end |
#run(app) ⇒ Object
31 32 33 |
# File 'lib/volt/server/middleware/middleware_stack.rb', line 31 def run(app) @app = app end |
#use(*args, &block) ⇒ Object
Set the app that gets called after the middleware runs def set_app(app)
@app = app
end
20 21 22 23 24 25 |
# File 'lib/volt/server/middleware/middleware_stack.rb', line 20 def use(*args, &block) @middlewares << [args, block] # invalidate builder, so it gets built again @builder = nil end |