Skip to content
Simple cookie based session management. Session data is stored database using Sequel.
Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
README.rdoc

README.rdoc

rack-session-sequel

Rack::Session::Memcacheを参考に、Sequel経由でDBにセッション情報を保持する ものを作りました。主に、Sinatraで利用するつもりで書いてます。

この機能を用いて、ログイン状態管理などをするために、 永続Cookieで「ブラウザを終了してもログイン状態を保持」することができるように してあります。 その場合にはログイン成功時の処理に、rack.session.options に以下のように有効期限を 付与してください。

env['rack.session.options'].merge!(:expire_after => 30 * 86400) # 30 days

migration

require 'rubygems'
require 'sequel'
require 'sequel/extensions/migration'

class CreateSessions < Sequel::Migration
  def up
    create_table :sessions do
      primary_key :id
      String :sid, :unique => true,  :null => false
      text :session
      DateTime :update_at
    end
  end

  def down
    self << 'drop table sessions'
  end
end

sample

require 'rubygems'
require 'sinatra'
require 'rack-session-sequel'
require 'sequel'

DB = Sequel.sqlite

use Rack::Session::Sequel , :dataset => DB[:sessions]

get '/' do
  if session['count']
    session['count'] += 1
  else
    session['count']  = 1
  end

  "count is #{session['count']}"
end
Something went wrong with that request. Please try again.