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