class Coach::MiddlewareItem
Attributes
Public Class Methods
Source
# File lib/coach/middleware_item.rb, line 10 def initialize(middleware, config = {}) @middleware = middleware @config_value = config end
Public Instance Methods
Source
# File lib/coach/middleware_item.rb, line 15 def build_middleware(context, successor) @middleware. new(context, successor&.instrument, config) end
Source
# File lib/coach/middleware_item.rb, line 40 def config @config ||= lambda_config? ? @config_value.call(parent.config) : @config_value.clone end
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.
Source
# File lib/coach/middleware_item.rb, line 30 def set_parent(parent) @parent = parent self end
Assigns the parent for this middleware, allowing config inheritance rubocop:disable Naming/AccessorMethodName
Source
# File lib/coach/middleware_item.rb, line 24 def validate! MiddlewareValidator.new(middleware).validated_provides! end
Runs validation against the middleware chain, raising if any unmet dependencies are discovered.
Private Instance Methods
Source
# File lib/coach/middleware_item.rb, line 46 def lambda_config? @config_value.respond_to?(:call) end