class Innate::Current
We track the current request/response/session (Trinity) in Thread.current so we can reach them from anywhere in the code without passing around the objects directly.
Public Class Methods
new(app, *rest)
click to toggle source
# File lib/innate/current.rb, line 11 def initialize(app, *rest) if rest.empty? @app = app else @app = Rack::Cascade.new([app, *rest]) end end
Public Instance Methods
call(env)
click to toggle source
Run setup and call the app
# File lib/innate/current.rb, line 20 def call(env) setup(env) @app.call(env) end
setup(env, request = Request, response = Response, session = Session)
click to toggle source
Setup new Request/Response/Session for this request/response cycle. The parameters are here to allow Ramaze to inject its own classes.
# File lib/innate/current.rb, line 27 def setup(env, request = Request, response = Response, session = Session) current = Thread.current req = current[:request] = request.new(env) res = current[:response] = response.new current[:actions] = [] current[:session] = Session.new(req, res) end