Add documentation in RDoc format.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3a0144865a
commit
1ea6c0aa9b
@ -1,3 +1,14 @@
|
|||||||
|
#
|
||||||
|
# cgi/session/pstore.rb - persistent storage of marshalled session data
|
||||||
|
#
|
||||||
|
# Documentation: William Webber (william@williamwebber.com)
|
||||||
|
#
|
||||||
|
# == Overview
|
||||||
|
#
|
||||||
|
# This file provides the CGI::Session::PStore class, which builds
|
||||||
|
# persistent of session data on top of the pstore library. See
|
||||||
|
# cgi/session.rb for more details on session storage managers.
|
||||||
|
|
||||||
require 'cgi/session'
|
require 'cgi/session'
|
||||||
require 'pstore'
|
require 'pstore'
|
||||||
|
|
||||||
@ -14,11 +25,38 @@ class CGI
|
|||||||
@data[key] = val
|
@data[key] = val
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# PStore-based session storage class.
|
||||||
|
#
|
||||||
|
# This builds upon the top-level PStore class provided by the
|
||||||
|
# library file pstore.rb. Session data is marshalled and stored
|
||||||
|
# in a file. File locking and transaction services are provided.
|
||||||
class PStore
|
class PStore
|
||||||
def check_id(id)
|
def check_id(id) #:nodoc:
|
||||||
/[^0-9a-zA-Z]/ =~ id.to_s ? false : true
|
/[^0-9a-zA-Z]/ =~ id.to_s ? false : true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Create a new CGI::Session::PStore instance
|
||||||
|
#
|
||||||
|
# This constructor is used internally by CGI::Session. The
|
||||||
|
# user does not generally need to call it directly.
|
||||||
|
#
|
||||||
|
# +session+ is the session for which this instance is being
|
||||||
|
# created. The session id must only contain alphanumeric
|
||||||
|
# characters; automatically generated session ids observe
|
||||||
|
# this requirement.
|
||||||
|
#
|
||||||
|
# +option+ is a hash of options for the initialiser. The
|
||||||
|
# following options are recognised:
|
||||||
|
#
|
||||||
|
# tmpdir:: the directory to use for storing the PStore
|
||||||
|
# file. Defaults to Dir::tmpdir (generally "/tmp"
|
||||||
|
# on Unix systems).
|
||||||
|
# prefix:: the prefix to add to the session id when generating
|
||||||
|
# the filename for this session's PStore file.
|
||||||
|
# Defaults to the empty string.
|
||||||
|
#
|
||||||
|
# This session's PStore file will be created if it does
|
||||||
|
# not exist, or opened if it does.
|
||||||
def initialize session, option={}
|
def initialize session, option={}
|
||||||
dir = option['tmpdir'] || ENV['TMP'] || '/tmp'
|
dir = option['tmpdir'] || ENV['TMP'] || '/tmp'
|
||||||
prefix = option['prefix'] || ''
|
prefix = option['prefix'] || ''
|
||||||
@ -34,6 +72,9 @@ class CGI
|
|||||||
@p = ::PStore.new path
|
@p = ::PStore.new path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Restore session state from the session's PStore file.
|
||||||
|
#
|
||||||
|
# Returns the session state as a hash.
|
||||||
def restore
|
def restore
|
||||||
unless @hash
|
unless @hash
|
||||||
@p.transaction do
|
@p.transaction do
|
||||||
@ -47,16 +88,19 @@ class CGI
|
|||||||
@hash
|
@hash
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Save session state to the session's PStore file.
|
||||||
def update
|
def update
|
||||||
@p.transaction do
|
@p.transaction do
|
||||||
@p['hash'] = @hash
|
@p['hash'] = @hash
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Update and close the session's PStore file.
|
||||||
def close
|
def close
|
||||||
update
|
update
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Close and delete the session's PStore file.
|
||||||
def delete
|
def delete
|
||||||
path = @p.path
|
path = @p.path
|
||||||
File::unlink path
|
File::unlink path
|
||||||
@ -67,6 +111,7 @@ class CGI
|
|||||||
end
|
end
|
||||||
|
|
||||||
if $0 == __FILE__
|
if $0 == __FILE__
|
||||||
|
# :enddoc:
|
||||||
STDIN.reopen("/dev/null")
|
STDIN.reopen("/dev/null")
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new cgi, 'database_manager' => CGI::Session::PStore
|
session = CGI::Session.new cgi, 'database_manager' => CGI::Session::PStore
|
||||||
|
Loading…
x
Reference in New Issue
Block a user