2009-06-06 5 views
5

J'explore Sinatra et je veux utiliser des sessions mais je ne veux pas qu'elles soient stockées dans un cookie, j'ai trouvé Rack :: Session :: Pool qui fonctionne très bien bien.Utiliser Rack :: Session :: Pool avec Sinatra

Maintenant je veux que les sessions expirent après une certaine durée mais je ne comprends pas comment instancier le Rack :: Session :: Pool et les utilise dans Sinatra.

Tout indice?

+1

Mais, [Rack :: Session :: Pool'] (http://rack.rubyforge.org/doc/classes/Rack/Session/Pool.html) n'utilise-t-il pas de cookies? – ma11hew28

Répondre

4

Dans votre fichier rackup:

%w(rubygems rack sinatra).each { |dependency| require dependency } 
disable :run 

require 'myapp' 

sessioned = Rack::Session::Pool.new(
    Sinatra::Application, 
    :domain  => 'example.com', 
    :expire_after => 60 * 60 * 24 * 365 # expire after 1 year 
) 
run sessioned 

Pour lancer l'exécution rackup app.ru, ou utiliser des passagers, etc. Cela devrait envelopper votre application dans la piscine de session et permettre à ses fonctionnalités. Je ne sais pas entièrement pourquoi il n'a pas besoin utiliser comme la plupart des autres logiciels. Je comprends que je n'ai pas testé cela du tout, je n'ai pas encore eu besoin de pools de sessions. J'ai écrit ceci à partir du documentation pour Rack :: Session :: Pool, qui avait un exemple en haut de la page. Donc, je ne peux pas vous dire exactement comment l'utiliser non plus.

9

Sinatra est assez puissant, l'astuce des méchants puces ne fonctionnait pas, mais cela fait:

use Rack::Session::Pool, :domain => 'example.com', :expire_after => 60 * 60 * 24 * 365 

Merci!

Questions connexes