ruby

https://github.com/ruby/ruby

Ruby

The Ruby Programming Language

CGI::Session#initialize

Create a new CGI::Session object for +request+.

+request+ is an instance of the +CGI+ class (see cgi.rb).
+option+ is a hash of options for initialising this
CGI::Session instance.  The following options are
recognised:

session_key:: the parameter name used for the session id.
              Defaults to '_session_id'.
session_id:: the session id to use.  If not provided, then
             it is retrieved from the +session_key+ parameter
             of the request, or automatically generated for
             a new session.
new_session:: if true, force creation of a new session.  If not set,
              a new session is only created if none currently
              exists.  If false, a new session is never created,
              and if none currently exists and the +session_id+
              option is not set, an ArgumentError is raised.
database_manager:: the name of the class providing storage facilities
                   for session state persistence.  Built-in support
                   is provided for +FileStore+ (the default),
                   +MemoryStore+, and +PStore+ (from
                   cgi/session/pstore.rb).  See the documentation for
                   these classes for more details.

The following options are also recognised, but only apply if the
session id is stored in a cookie.

session_expires:: the time the current session expires, as a
                  +Time+ object.  If not set, the session will terminate
                  when the user's browser is closed.
session_domain:: the hostname domain for which this session is valid.
                 If not set, defaults to the hostname of the server.
session_secure:: if +true+, this session will only work over HTTPS.
session_path:: the path for which this session applies.  Defaults
               to the directory of the CGI script.

+option+ is also passed on to the session storage class initializer; see
the documentation for each session storage class for the options
they support.

The retrieved or created session is automatically added to +request+
as a cookie, and also to its +output_hidden+ table, which is used
to add hidden input elements to forms.

*WARNING* the +output_hidden+
fields are surrounded by a <fieldset> tag in HTML 4 generation, which
is _not_ invisible on many browsers; you may wish to disable the
use of fieldsets with code similar to the following
(see http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37805)

  cgi = CGI.new("html4")
  class << cgi
      undef_method :fieldset
  end

Source | Google | Stack overflow

Edit

git clone [email protected]:ruby/ruby.git

cd ruby

open lib/cgi/session.rb

Contribute

# Make a new branch

git checkout -b -your-name--update-docs-CGI--Session-initialize-for-pr


# Commit to git

git add lib/cgi/session.rbgit commit -m "better docs for CGI::Session#initialize"


# Open pull request

gem install hub # on a mac you can `brew install hub`

hub fork

git push <your name> -your-name--update-docs-CGI--Session-initialize-for-pr

hub pull-request


# Celebrate!