2017.07 «  - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - » 2017.09
TOP > session セッションをDBで管理

 ← session セッションの情報を消す | TOP | 正規表現の始まり文字と終わり文字を変えてみる

スポンサーサイト 

--年--月--日 (--)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


【広告】

[--.--.--(--) --:--] スポンサー広告 | Trackback(-) | Comment(-)
↑TOPへ

session セッションをDBで管理 

2007年06月23日 ()
セッションを使うと、ユーザが画面遷移してもユーザ特有の情報を失わないようにできます。

フツー、このセッション情報は、ユーザのクッキーの値と、サーバのセッション情報の値が同じものをつきあわせて、サーバのセッション情報を使います。

ではサーバにはどうやってセッション情報が保存されているかというと、デフォルトではファイルで保存されているそうです。

それをファイルではなくてDBに保存するには、例のレ・レ・レイク(by ジーコ)を使うらしいです。

早速やってみよう!

# rake db:sessions:create
(in /home/roruser/myApplication)
exists db/migrate
create db/migrate/001_add_sessions.rb



と、migrationファイルができました。

ちょっと中をのぞいでみましょう。

class AddSessions < ActiveRecord::Migration
  def self.up
    create_table :sessions do |t|
      t.column :session_id, :string
      t.column :data, :text
      t.column :updated_at, :datetime
    end

    add_index :sessions, :session_id
    add_index :sessions, :updated_at
  end

  def self.down
    drop_table :sessions
  end
end



sessions テーブルを作成するためのmigrationファイルのようです。

では、実際にmigrateしてしまいましょう

# rake db:migrate
(in /home/roruser/myApplication)
== AddSessions: migrating =====================================================
-- create_table(:sessions)
-> 0.3056s
-- add_index(:sessions, :session_id)
-> 0.2372s
-- add_index(:sessions, :updated_at)
-> 0.0926s
== AddSessions: migrated (0.6439s) ============================================



早いなあ。息をつく間もありませぬ。

どんなsessionsテーブルができたかというと、

$mysql explain sessions;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment | 
| session_id | varchar(255) | YES  | MUL | NULL    |                | 
| data       | text         | YES  |     | NULL    |                | 
| updated_at | datetime     | YES  | MUL | NULL    |                | 
+------------+--------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)



です。極めてフツーですね。特異な点は見当たらないです。

最後の仕上げに、config/environment.rb ファイルを変更します。


# Use the database for sessions instead of the file system
# (create the session table with 'rake db:sessions:create')
# config.action_controller.session_store = :active_record_store



という箇所がありまして、最後の行のコメントを50代の部長代理が家に帰って一息ついたときのカツラのように、気軽に取り外します。


# Use the database for sessions instead of the file system
# (create the session table with 'rake db:sessions:create')
config.action_controller.session_store = :active_record_store



後は、Webサーバを再起動すれば、セッション変数を使ったとき(たとえば、 session[:honyarara] のように)は、DBにセッション情報が保存されるようになります。

めでたしめでたし。

【広告】

[2007.06.23(Sat) 01:03] sessionTrackback(0) | Comments(0)
↑TOPへ

 ← session セッションの情報を消す | TOP | 正規表現の始まり文字と終わり文字を変えてみる

COMMENT

COMMENT POST















管理者にだけ表示

 ← session セッションの情報を消す | TOP | 正規表現の始まり文字と終わり文字を変えてみる
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。