Class: Innate::Current

Inherits:
Object
  • Object
show all
Extended by:
Trinity
Defined in:
lib/innate/current.rb

Overview

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.

Instance Method Summary collapse

Methods included from Trinity

action

Methods included from StateAccessor

each, #state_accessor, #state_reader, #state_writer

Constructor Details

#initialize(app, *rest) ⇒ Current

Returns a new instance of Current.



11
12
13
14
15
16
17
# 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

Instance Method Details

#call(env) ⇒ Object

Run setup and call the app



20
21
22
23
# File 'lib/innate/current.rb', line 20

def call(env)
  setup(env)
  @app.call(env)
end

#setup(env, request = Request, response = Response, session = Session) ⇒ Object

Setup new Request/Response/Session for this request/response cycle. The parameters are here to allow Ramaze to inject its own classes.



27
28
29
30
31
32
33
# 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