README.rdoc
May 9, 2009 ยท View on GitHub
= Rack::Capabilities
== Usage
class CuriousMiddleware def initialize(app) @app = app end
def curious?
true #and how!
end
def call(env)
# who is before me?
env['rack.capabilities'].before(self)
# returns Rack::Middleware2
# who is after me?
env['rack.capabilities'].after(self)
# returns Rack::Middleware4
# can I go find Rack::Middleware1?
env['rack.capabilities'].find(Rack::Middleware1)
# returns Rack::Middleware1
# or just find based on anything!
env['rack.capabilities'].find{|mw| mw.respond_to?(:curious?)}
# returns our friend, CuriousMiddleware
# And presumably you'd
# want to do stuff..
# but thats up to you
@app.call(env)
end
end
use Rack::Capabilities use Rack::Middleware1 use Rack::Middleware2 use Rack::CuriousMiddleware use Rack::Middleware4 use Rack::Middleware5
== Caveats and Limitations
Rack::Capabilities must be required (not autoloaded as it must monkey patch Rack::Builder). The rack.capabilities environment variable is only available at call time.