class Toys::Middleware::Stack
A stack of middleware specs.
Attributes
default_specs[R]
The default set of middleware specs. @return [Array<Toys::Middleware:Spec>]
post_specs[R]
The middleware specs that follow the default set. @return [Array<Toys::Middleware:Spec>]
pre_specs[R]
The middleware specs that precede the default set. @return [Array<Toys::Middleware:Spec>]
Public Class Methods
new(default_specs: nil, pre_specs: nil, post_specs: nil)
click to toggle source
@private
# File lib/toys/middleware.rb, line 323 def initialize(default_specs: nil, pre_specs: nil, post_specs: nil) @pre_specs = pre_specs || [] @post_specs = post_specs || [] @default_specs = default_specs || [] end
Public Instance Methods
==(other)
click to toggle source
@private
# File lib/toys/middleware.rb, line 330 def ==(other) other.is_a?(Stack) && pre_specs.eql?(other.pre_specs) && default_specs.eql?(other.default_specs) && post_specs.eql?(other.post_specs) end
Also aliased as: eql?
add(middleware, *args, **kwargs, &block)
click to toggle source
Add a middleware spec to the stack, in the default location, which is at the end of pre_specs
). See {Toys::Middleware.spec} for a description of the arguments you can pass.
@overload add(name, *args, **kwargs, &block) @overload add(array) @overload add(middleware_object)
# File lib/toys/middleware.rb, line 298 def add(middleware, *args, **kwargs, &block) pre_specs.push(Middleware.spec(middleware, *args, **kwargs, &block)) end
build(middleware_lookup)
click to toggle source
Build the middleware in this stack.
@return [Array<Toys::Middleware>]
# File lib/toys/middleware.rb, line 318 def build(middleware_lookup) (@pre_specs + @default_specs + @post_specs).map { |spec| spec.build(middleware_lookup) } end
dup()
click to toggle source
Duplicate this stack.
@return [Toys::Middleware::Stack]
# File lib/toys/middleware.rb, line 307 def dup Stack.new(pre_specs: pre_specs.dup, post_specs: post_specs.dup, default_specs: default_specs.dup) end
hash()
click to toggle source
@private
# File lib/toys/middleware.rb, line 339 def hash [@pre_specs, @default_specs, @post_specs].hash end