class Builder
A convenient interface for constructing middleware stacks.
Definitions
def initialize(default_app = NotFound)
Initialize the builder with the given default application.
Signature
-
parameter
default_app
Object
The default application to use if no middleware is specified.
Implementation
def initialize(default_app = NotFound)
@use = []
@app = default_app
end
def use(middleware, *arguments, **options, &block)
Use the given middleware with the given arguments and options.
Signature
-
parameter
middleware
Class | Object
The middleware class to use.
-
parameter
arguments
Array
The arguments to pass to the middleware constructor.
-
parameter
options
Hash
The options to pass to the middleware constructor.
-
parameter
block
Proc
The block to pass to the middleware constructor.
Implementation
def use(middleware, *arguments, **options, &block)
@use << proc {|app| middleware.new(app, *arguments, **options, &block)}
end
def run(app)
Specify the (default) middleware application to use.
Signature
-
parameter
app
Middleware
The application to use if no middleware is able to handle the request.
Implementation
def run(app)
@app = app
end
def to_app
Convert the builder to an application by chaining the middleware together.
Signature
-
returns
Middleware
The application.
Implementation
def to_app
@use.reverse.inject(@app) {|app, use| use.call(app)}
end