Ruby CGI Session

CGI::Session は、ユーザーとCGI環境のために永続的なセッション状態を保存できます。セッションは使用後に閉じる必要があります。これにより、データがストレージに書き込まれることが保証されます。セッションが完了したら、そのデータを削除する必要があります。

実例

#!/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}" } } }

「/cgi-bin/test.cgi?bgcolor=red」にアクセスすると、指定された背景色のページにジャンプします。

セッションデータはサーバーの一時ファイルディレクトリに保存されます。prefix パラメータはセッションのプレフィックスを指定し、一時ファイルのプレフィックスとして使用されます。これにより、サーバー上で異なるセッション一時ファイルを簡単に識別できます。


CGI::Session クラス

CGI::Session は、ユーザーとCGI環境の永続的な状態を保持します。セッションはメモリ上にもハードディスク上にも保存できます。

クラスメソッド

Ruby のクラス CGI::Session は、セッションを作成する簡単なメソッドを提供します:

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

新しいCGIセッションを開始し、対応するCGI::Sessionオブジェクトを返します。オプションは省略可能なハッシュで、以下の値を指定できます:

  • session_key:セッションを保存するキー名。デフォルトは _session_id です。
  • session_id:一意のセッションID。自動生成されます。
  • new_session:true の場合、現在のセッションのために新しいセッションIDを作成します。false の場合、session_id を使用して既存のセッション識別子を使用します。このパラメータを省略した場合、利用可能な既存のセッションがあればそれを使用し、なければ新しいセッションを作成します。
  • database_manager:セッションを保存するクラス。CGI::Session::FileStore または CGI::Session::MemoryStore を指定できます。デフォルトは FileStore です。
  • tmpdir:FileStore の場合、セッションの保存先ディレクトリを指定します。
  • prefix:FileStore の場合、セッションファイルのプレフィックスを指定します。

インスタンスメソッド

番号メソッドの説明
1[ ]
指定されたキーの値を返します。例を参照してください。
2[ ]=
指定されたキーの値を設定します。例を参照してください。
3delete
基盤となるデータベース管理の削除メソッドを呼び出します。FileStore の場合、セッションを含む物理ファイルを削除します。MemoryStore の場合、セッションデータをメモリから削除します。
4update
基盤となるデータベース管理の更新メソッドを呼び出します。FileStore の場合、セッションをディスクに書き込みます。MemoryStore の場合は効果がありません。
その他の拡張