class Coach::MiddlewareItem
Attributes
middleware[RW]
parent[RW]
Public Class Methods
new(middleware, config = {})
click to toggle source
# File lib/coach/middleware_item.rb, line 10 def initialize(middleware, config = {}) @middleware = middleware @config_value = config end
Public Instance Methods
build_middleware(context, successor)
click to toggle source
# File lib/coach/middleware_item.rb, line 15 def build_middleware(context, successor) @middleware. new(context, successor&.instrument, config) end
config()
click to toggle source
Generates config by either cloning our given config (if it’s a hash) else if a lambda value, then will compute the config by calling the lambda with this middlewares parent config.
# File lib/coach/middleware_item.rb, line 40 def config @config ||= lambda_config? ? @config_value.call(parent.config) : @config_value.clone end
set_parent(parent)
click to toggle source
Assigns the parent for this middleware, allowing config inheritance rubocop:disable Naming/AccessorMethodName
# File lib/coach/middleware_item.rb, line 30 def set_parent(parent) @parent = parent self end
validate!()
click to toggle source
Runs validation against the middleware chain, raising if any unmet dependencies are discovered.
# File lib/coach/middleware_item.rb, line 24 def validate! MiddlewareValidator.new(middleware).validated_provides! end
Private Instance Methods
lambda_config?()
click to toggle source
# File lib/coach/middleware_item.rb, line 46 def lambda_config? @config_value.respond_to?(:call) end