class Tofu::Bartender
Attributes
prefix[R]
Public Class Methods
new(factory, name=nil)
click to toggle source
# File lib/tofu.rb, line 130 def initialize(factory, name=nil) @factory = factory @prefix = name ? name : factory.to_s.split(':')[-1] @bar = SessionBar.new end
Public Instance Methods
service(context)
click to toggle source
# File lib/tofu.rb, line 137 def service(context) begin session = retrieve_session(context) catch(:tofu_done) { session.service(context) } store_session(context, session) ensure end end
Private Instance Methods
make_session(context)
click to toggle source
# File lib/tofu.rb, line 164 def make_session(context) hint = context.req_cookie(@prefix + '_hint') @factory.new(self, hint) end
retrieve_session(context)
click to toggle source
# File lib/tofu.rb, line 147 def retrieve_session(context) sid = context.req_cookie(@prefix + '_id') session = @bar.fetch(sid) || make_session(context) return session end
store_session(context, session)
click to toggle source
# File lib/tofu.rb, line 153 def store_session(context, session) sid = @bar.store(session) context.res_add_cookie(@prefix + '_id', sid, session.expires) hint = session.hint if hint context.res_add_cookie(@prefix +'_hint', hint, session.hint_expires) end session.renew return sid end