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