Web | This Site

Ruby Basics
Ruby Advanced
Ruby Useful References
Ruby Useful Resources
Selected Reading
© 2011 TutorialsPoint.COM

| Home |  | References |  | Discussion Forums |  | About TP

# Ruby CGI Sessions

A CGI::Session maintains a persistent state for Web users in a CGI environment. Sessions should be closed after use, as this ensures that their data is written out to the store. When you've permanently finished with a session, you should delete it.

    #!/usr/bin/ruby

    require 'cgi'
    require 'cgi/session'
    cgi = CGI.new("html4")

    sess = CGI::Session.new( cgi, "session_key" => "a_test",
                                  "prefix" => "rubysess.")
    lastaccess = sess["lastaccess"].to_s
    sess["lastaccess"] = Time.now
    if cgi['bgcolor'][0] =~ /[a-z]/
      sess["bgcolor"] = cgi['bgcolor']
    end

    cgi.out{
      cgi.html {
        cgi.body ("bgcolor" => sess["bgcolor"]){
          "The background of this page"    +
          "changes based on the 'bgcolor'" +
          "each user has in session."      +
          "Last access time: #{lastaccess}"
        }
      }
    }

Accessing "/cgi-bin/test.cgi?bgcolor=red" would turn the page red for a single user for each successive hit until a new "bgcolor" was specified via the URL.

Session data is stored in a temporary file for each session, and the prefix parameter assigns a string to be prepended to the filename, making your sessions easy to identify on the filesystem of the server.

CGI::Session still lacks many features, such as the capability to store objects other than Strings, session storage across multiple servers

# Class CGI::Session:

A CGI::Session maintains a persistent state for web users in a CGI environment. Sessions may be memory-resident or may be stored on disk.

## Class methods:

Ruby class Class CGI::Session provides a single class method to create a session:

    CGI::Session::new( cgi[, option])

Starts a new CGI session and returns the corresponding CGI::Session object. option may be an option hash specifying one or more of the following:

- session_key: Key name holding the session ID. Default is _session_id.

- session_id: Unique session ID. Generated automatically

- new_session: If true, create a new session id for this session. If false, use an existing session identified by session_id. If omitted, use an existing session if available, otherwise create a new one.

- database_manager: Class to use to save sessions; may be CGI::Session::FileStore or CGI::Session::MemoryStore. Default is FileStore.

- tmpdir: For FileStore, directory for session files.

- prefix: For FileStore, prefix of session filenames.

## Instance Methods:

SN | Methods with Description
--- | ---
1 | [ ] Returns the value for the given key. See example above.
2 | [ ]= Sets the value for the given key. See example above.
3 | delete Calls the delete method of the underlying database manager. For FileStore, deletes the physical file containing the session. For MemoryStore, removes the session from memory.
4 | update Calls the update method of the underlying database manager. For FileStore, writes the session data out to disk. Has no effect with MemoryStore.

Advertisement

Online Image Processing

Indian Baby Names