トップ «前の日記(2010-01-17) 最新 次の日記(2010-01-23)» 編集

Ussy Diary


2010-01-21

[Ruby][Sinatra][Rack]Sinatra(Rack) のセッションを無効にする

まずサーバーセッションを有効にするには起動ファイルである config.ru で use します。

use Rack::Session::Pool

引数にオプションをつけてセッションの有効期限を変えたりします。

あとはクライアントから呼び出されたアクション(コントローラー)で session_options に :drop オプションを渡してあげると削除されます。

get '/' do
  (session[:count] = (session[:count] || 0) + 1).to_s
end

get '/clear' do
  request.session_options[:drop] = true
end

http://localhost:4567/ をたたくとリクエストした数だけカウント数が画面に表示され、 /clear を叩いてから再度 / を叩くと、セッション ID が新たに割り当てられ 1 に戻ります。 :renew を渡すと新たなセッション ID を割り振りつつ、前の情報をマージしてくれます。

session.clear は単純に中身の Hash オブジェクトをクリアするだけで、セッション ID はそのままでした。