ThuisBalletje
TrainingenBalletje
ConsultancyBalletje
Blog Balletje
Rake En Rails
06-11-2007

Sessiebeheer met Rake

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.


Waar maken we onze rake file aan?

De rakefile maken we aan in onze lib/tasks directory met .rake als extensie. Het zou er dan als volgt uit kunnen zien:


lib/tasks


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:


task_01


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.


Wat hebben we hier aan?

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:


task_01


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 !