Herokuでセッション情報を定期的に削除

自分用メモ。

session_storeをactive_record_storeにしているとデータベースのセッション情報がどんどん増えてしまうので定期的に削除する仕組みを実装。

Herokuの場合、以前はCronぐらいしかなかったみたいですけど今だとHeroku Schedulerがあります。こちらの方が設定の自由度が高いです。

設定は簡単で、Heroku Schedulerを参考にセッション情報削除用のタスクを作って、Heroku Schedulerの設定画面で設定するだけです。

タスクはこんなファイルをlib//tasks/cron.rakeという名前で作りました。

desc "This task is called by the Heroku scheduler add-on"
task :delete_sessions => :environment do
    puts "Deleting session..."
    
    target = 14

    class Session < ActiveRecord::Base
    end
    Session.delete_all(["updated_at < ?", target.days.ago])
    
    puts "done."
end