Als je in rails met sessies werkt dan begin je meestal filebased in je tmp/sessions dir. Dat is voor development geen probleem, maar in productie natuurlijk niet toereikend. Dus we zetten dit al vast aan in environment.rb:
config.action_controller.session_store = :active_record_store
En die sessions database moet je ook een beetje in de gaten kunnen blijven houden als het gaat om het aantal, want dat kan snel groeien. Het is ook weer niet zo dat we direct een cronjob nodig hebben maar een paar rake tasks zou wel handig zijn.
De rakefile maken we aan in onze lib/tasks directory met .rake als extensie. Het zou er dan als volgt uit kunnen zien:

We gaan nu twee rake tasks aanmaken om onze ActiveRecord sessies te beheren. Allemaal ontzettend simpel maar wel handig. We gaan een task maken die onze sessies telt, en een task die alle sessies verwijderd die ouder zijn dan twee dagen.
De rake task 'tel_sessies' ziet er zo uit:

We beginnen met het geven van een omschrijving. Die omschrijving wordt tevens zichtbaar als we in de terminal onze aanwezige rake tasks opvragen, dus kies een logische omschrijving. Daarna volgt de daadwerkelijke rake tasknaam die we gebruiken in de terminal. We hebben hier een block waar we niet anders doen dan simpel opvragen wat het aantal sessies is in de database.
Ik kan nu heel simpel naar mijn box ssh'en en de rake tasks opvragen van mijn app. Ik krijg dan uiteraard alle aanwezige rake tasks te zien in mijn app geleverd door rails, maar ook deze task die ik net heb aangemaakt.
box: > cd killer_app
box: > rake --tasks
box: > rake tel_sessies # Tel Database Sessies
En nu kunnen we ook daadwerkelijk onze rake task uitvoeren:
box: > rake tel_sessies
box: > Aantal sessies in database: 791.
Dit is de wis_sessies task:

En dat levert in de praktijk het volgende op:
box: > rake tel_sessies
box: > Aantal sessies in database: 791.
box: > rake wis_sessies
box: > rake tel_sessies
box: > Aantal sessies in database: 196.
Rake is cool !