セッション情報はDB(active_record_store)に格納しているのですが、このセッション情報のうち古いもの(1日前とか)を定期的に削除するにはどのようにすればいいんでしょうか?
sessionsテーブルで古いものをdeleteすればいいのは分かっているのですが、Railsからどのようなコードを書けばよいのか?(もしくはそんな方法はないのか?)が知りたいです。
RoRバージョン 2.0.2
http://d.hatena.ne.jp/asin/4797336625/morodiary05-22
リンクは自分で書いた書籍の宣伝(アサマシつき)です。
ご質問の内容は、script/consoleやRailsアプリ内から以下のような感じでやればOKです。1.days.agoを適宜書き換えてください。
CGI::Session::ActiveRecordStore::Session.delete_all(["sessions.updated_at < ?", 1.days.ago])
実際はcronなんかで実行すると思いますが、その場合はscript/runnerを使うとよいと思います。
#!/bin/sh cd path/to/app ruby script/runner 'CGI::Session::ActiveRecordStore::Session.delete_all(["sessions.updated_at < ?", 1.days.ago])'
以下宣伝。
というようなことを冒頭の書籍にも書いたので(「36. セッションを無効にする」)興味がありましたらご覧ください。
ありがとうございます。
まさに期待していた回答です。
さっそく実装してみたいと思います。
#書籍の購入も検討します。(笑)