Wartungsaufgaben

Sessions aus der Datenbank löschen

Wenn sie Rails so konfiguriert haben, dass Browser-Sessions in der Datenbank gespeichert werden, sollten diese regelmäßig entfernt werden, um die betreffende Tabelle nicht zu groß werden zu lassen und die Performance der Datenbank nicht zu beeinträchtigen.

Hierfür können Sie beispielsweise den folgenden Ruby-Code als Rake-Task in Ihrem Projekt verwenden. Dieser Task kann und sollte regelmäßig als Cron-Job ausgeführt werden.

namespace :db do
  namespace :sessions do
    desc "Prune database-stored sessions older than one week"
    task :prune => :environment do
      CGI::Session::ActiveRecordStore::Session.delete_all ["updated_at < ?", 1.week.ago ]
    end

    desc "Count database sessions"
    task :count => :environment do
      puts "Currently storing #{CGI::Session::ActiveRecordStore::Session.count} sessions"
    end
  end
end