Class Index [+]

Quicksearch

Merb::SessionMixin::RequestMixin

Public Class Methods

included(base) click to toggle source

Adds class methods to Merb::Request object. Sets up repository of session store types. Sets the session ID key and expiry values.

:api: private

     # File lib/merb-core/dispatch/session.rb, line 125
125:       def self.included(base)
126:         base.extend ClassMethods
127:         
128:         # Keep track of all known session store types.
129:         base.cattr_accessor :registered_session_types
130:         base.registered_session_types = Dictionary.new
131:         base.class_inheritable_accessor :_session_id_key, :_session_secret_key,
132:                                         :_session_expiry, :_session_secure,
133:                                         :_session_http_only, :_default_cookie_domain
134:         
135:         base._session_id_key        = Merb::Config[:session_id_key] || '_session_id'
136:         base._session_expiry        = Merb::Config[:session_expiry] || 0
137:         base._session_secret_key    = Merb::Config[:session_secret_key]
138:         base._session_secure        = Merb::Config[:session_secure] || false
139:         base._session_http_only     = Merb::Config[:session_http_only] || false
140:         base._default_cookie_domain = Merb::Config[:default_cookie_domain]
141:       end

Public Instance Methods

default_cookies() click to toggle source

Assign default cookie values

:api: private

     # File lib/merb-core/dispatch/session.rb, line 245
245:       def default_cookies
246:         defaults = {}
247:         if route && route.allow_fixation? && params.key?(_session_id_key)
248:           Merb.logger.info("Fixated session id: #{_session_id_key}")
249:           defaults[_session_id_key] = params[_session_id_key]
250:         end
251:         defaults
252:       end
default_session_store() click to toggle source

The default session store type.

:api: private

     # File lib/merb-core/dispatch/session.rb, line 162
162:       def default_session_store
163:         Merb::Config[:session_store] && Merb::Config[:session_store].to_sym
164:       end
finalize_session() click to toggle source

Teardown and/or persist the current sessions.

:api: private

     # File lib/merb-core/dispatch/session.rb, line 237
237:       def finalize_session
238:         session_stores.each { |name, store| store.finalize(self) }
239:       end
Also aliased as: finalize_sessions
finalize_sessions() click to toggle source
Alias for: finalize_session
session(session_store = nil) click to toggle source

Returns session container. Merb is able to handle multiple session stores, hence a parameter to pick it.

Parameters

session_store

The type of session store to access,

defaults to default_session_store.

Notes

If no suitable session store type is given, it defaults to cookie-based sessions.

Returns

SessionContainer

an instance of a session store extending Merb::SessionContainer.

:api: public

     # File lib/merb-core/dispatch/session.rb, line 190
190:       def session(session_store = nil)
191:         session_store ||= default_session_store
192:         if class_name = self.class.registered_session_types[session_store]
193:           session_stores[session_store] ||= Object.full_const_get(class_name).setup(self)
194:         elsif fallback = self.class.registered_session_types.keys.first
195:           Merb.logger.warn "Session store '#{session_store}' not found. Check your configuration in init file."
196:           Merb.logger.warn "Falling back to #{fallback} session store."
197:           session(fallback)
198:         else
199:           msg = "No session store set. Set it in init file like this: c[:session_store] = 'activerecord'"
200:           Merb.logger.error!(msg)
201:           raise NoSessionContainer, msg            
202:         end
203:       end
session=(new_session) click to toggle source

Parameters

new_session

A session store instance.

Notes

The session is assigned internally by its session_store_type key.

:api: private

     # File lib/merb-core/dispatch/session.rb, line 212
212:       def session=(new_session)
213:         if self.session?(new_session.class.session_store_type)
214:           original_session_id = self.session(new_session.class.session_store_type).session_id
215:           if new_session.session_id != original_session_id
216:             set_session_id_cookie(new_session.session_id)
217:           end
218:         end
219:         session_stores[new_session.class.session_store_type] = new_session
220:       end
session?(session_store = nil) click to toggle source

Whether a session has been setup

Returns

Boolean

true if the session is part of the session stores configured.

:api: private

     # File lib/merb-core/dispatch/session.rb, line 228
228:       def session?(session_store = nil)
229:         (session_store ? [session_store] : session_stores).any? do |type, store|
230:           store.is_a?(Merb::SessionContainer)
231:         end
232:       end
session_id() click to toggle source
session_stores() click to toggle source

Returns

Hash

All active session stores by type.

:api: private

     # File lib/merb-core/dispatch/session.rb, line 170
170:       def session_stores
171:         @session_stores ||= {}
172:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.