class Namira::Stack
The middleware stack used to send a request
Public Class Methods
default()
click to toggle source
The default middleware stack
# File lib/namira/stack.rb, line 8 def default Stack.new do use Middleware::Config use Middleware::Header use Middleware::Timing use Middleware::Redirector use Middleware::Logger use Middleware::Timeout use Middleware::Network use Middleware::Responder end end
new(&block)
click to toggle source
# File lib/namira/stack.rb, line 22 def initialize(&block) @middleware = [] instance_eval(&block) end
Public Instance Methods
call(env)
click to toggle source
Called by the middleware runner.
@param env [Namira::Env] The request environment
# File lib/namira/stack.rb, line 31 def call(env) raise ArgumentError, 'Invalid environment' unless env.is_a?(Namira::Env) to_app.call(env) end
use(klass, *args, &block)
click to toggle source
Add a class to the middleware stack
@param klass [Class, call
] The middleware class @param args [Any] Arguments passed to the class initializer @param block [Block] A block to pass to the class initializer
# File lib/namira/stack.rb, line 43 def use(klass, *args, &block) @middleware << lambda do |app| klass.new(app, *args, &block) end end
Private Instance Methods
to_app()
click to toggle source
# File lib/namira/stack.rb, line 51 def to_app application = ->(env) { env } @middleware.reverse.inject(application) do |app, component| component.call(app) end end