module Middlewear::ClassMethods

Public Instance Methods

add(klass, *args) click to toggle source
# File lib/middlewear.rb, line 12
def add(klass, *args)
  registry << [klass, args]
end
add_after(after_klass, klass, *args) click to toggle source
# File lib/middlewear.rb, line 22
def add_after(after_klass, klass, *args)
  idx = registry.index_of(after_klass)
  raise MiddlewareNotFound.new("#{after_klass} not registered in middleware stack") unless idx
  registry.insert(idx + 1, klass, args)
end
add_before(before_klass, klass, *args) click to toggle source
# File lib/middlewear.rb, line 16
def add_before(before_klass, klass, *args)
  idx = registry.index_of(before_klass)
  raise MiddlewareNotFound.new("#{before_klass} not registered in middleware stack") unless idx
  registry.insert(idx, klass, args)
end
app() click to toggle source

When called, this creates a new instance of an App with new instances of each registered middleware. To avoid contamination between calls, this instantiates a new set of objects each time it is called.

# File lib/middlewear.rb, line 45
def app
  App.new.tap do |app|
    app.stack = create_stack(app)
  end
end
create_stack(app) click to toggle source
# File lib/middlewear.rb, line 38
def create_stack(app)
  registry.map { |r| r.create_new(app) }
end
delete(klass) click to toggle source
# File lib/middlewear.rb, line 28
def delete(klass)
  registry.delete(klass)
end
registry() click to toggle source

The current registry of middleware. Note that this registry is not a set of instantiated middleware objects, but a registry of the classes themselves.

# File lib/middlewear.rb, line 34
def registry
  @registry ||= Registry.new
end