class Rack::Session::Mongo

Constants

DEFAULT_OPTIONS

Options for mongo_rack

:server

Specifies server, port, db and collection location. Defaults to localhost:27017/mongo_session/sessions. Format must conform to the format {host}:{port}/{database_name}/{collection_name}.

:pool_size

The connection socket pool size - see mongo-ruby-driver docs for settings. Defaults to 1 connection.

:pool_timeout

The connection pool timeout. see mongo-ruby-driver docs for settings. Defaults to 1 sec.

:logging

Set to true to enable logger. Default is false

Public Instance Methods

get_session( env, sid ) click to toggle source

Fetch session with optional session id. Retrieve session from mongodb if any

# File lib/mongo_rack.rb, line 52
def get_session( env, sid )
  return _get_session( env, sid ) unless env['rack.multithread']
  mutex.synchronize do
    return _get_session( env, sid )
  end        
end
set_session( env, sid, new_session, options ) click to toggle source

Update session params and sync to mongoDB.

# File lib/mongo_rack.rb, line 60
def set_session( env, sid, new_session, options )
  return _set_session( env, sid, new_session, options ) unless env['rack.multithread']
  mutex.synchronize do    
    return _set_session( env, sid, new_session, options )
  end        
end

Public Class Methods

new(app, options={}) click to toggle source

Initializes mongo_rack. Pass in options for default override.

# File lib/mongo_rack.rb, line 33
def initialize(app, options={})
  super

  host, port, db_name, cltn_name = parse_server_desc( @default_options[:server] )
  
  @mutex      = Mutex.new      
  @connection = ::Mongo::Connection.new( 
    host, 
    port,
    :pool_size => @default_options[:pool_size],
    :timeout   => @default_options[:pool_timeout] )
  @db         = @connection.db( db_name )
  @sessions   = @db[cltn_name]

  @logger = ::Logger.new( $stdout )
  @logger.level = set_log_level( @default_options[:log_level] )
end