Class: Cuca::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/cuca/session.rb

Overview

Description

Session can be used to store stateful data. It is not loaded by default, to make use of it you must require this module and tell a controller to use a session.

Example Use (permanent data)

Initialize (using a controller):

class ApplicationController < Cuca::Controller
  use_session
end

Save and Load data (from any widgets e.g. controller):

class IndexController < ApplicationController

  def run
     session[:stuff_to_remember] = "hello world"
     @stuff = session[:stuff_to_remember]
  end

end

Flash Memory

The flash memory can be used to store temporarily data for the current and next action. A typical example are messages after a post event, like:

class LoginController < ApplicationController
    (...)
   def post
       if (params['username'] == 'root' && params['pass'] == 'stuff') then 
          session.flash[:message] = "You are logged in"
          session[:username] = 'root'
          stop :redirect => 'index'
       end
   end
end

If you want to keep the flash memory for another cycle you can call:

session.flash.keep

Page Memory

Page memory is a container to store data only valid for the current action. It will be erased once you leave to a different action.

Configuration

Session is using some values from App::Config :

‘session_prefix’ ‘session_valid’ ‘session_key’

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cgi) ⇒ Session

Returns a new instance of Session.



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/cuca/session.rb', line 103

def initialize(cgi)
  @cgi = cgi

  @session_parameters = {
         'database_manager' => CGI::Session::PStore,
         'session_key' => App::config["session_key"],
         'session_path' => '/',
#          'new_session' => false,
         'session_expires' => Time.now + App::config["session_valid"].to_i,
         'prefix' => App::config["session_prefix"] }

  make_session


  @flash = SessionFlash.new(self)
  @page  = SessionPage.new(self)
end

Instance Attribute Details

#cgiObject (readonly)

Returns the value of attribute cgi.



74
75
76
# File 'lib/cuca/session.rb', line 74

def cgi
  @cgi
end

#flashObject (readonly)

Returns the value of attribute flash.



72
73
74
# File 'lib/cuca/session.rb', line 72

def flash
  @flash
end

#pageObject (readonly)

Returns the value of attribute page.



73
74
75
# File 'lib/cuca/session.rb', line 73

def page
  @page
end

Instance Method Details

#[](key) ⇒ Object



125
126
127
# File 'lib/cuca/session.rb', line 125

def [](key)
  return @sess[key]
end

#[]=(key, value) ⇒ Object



121
122
123
# File 'lib/cuca/session.rb', line 121

def []=(key, value) 
  @sess[key] = value
end

#closeObject



129
130
131
# File 'lib/cuca/session.rb', line 129

def close
  @sess.close
end

#deleteObject



137
138
139
# File 'lib/cuca/session.rb', line 137

def delete
  @sess.delete
end

#exists?Boolean

returns true/false if a session exists

Returns:

  • (Boolean)


92
93
94
95
96
97
98
99
100
101
# File 'lib/cuca/session.rb', line 92

def exists?
  begin
     p = @session_parameters.clone
     p['new_session'] = false
     session = CGI::Session.new(cgi, p)
  rescue ArgumentError
     return false
  end
  return true
end

#resetObject



82
83
84
85
86
87
88
# File 'lib/cuca/session.rb', line 82

def reset
  begin
    @sess.delete
  rescue
  end
  make_session
end

#updateObject



133
134
135
# File 'lib/cuca/session.rb', line 133

def update
  @sess.update
end