2009-06-06 18 views
5

Estoy explorando Sinatra y quiero usar sesiones pero no quiero que se almacenen en una Cookie, encontré Rack :: Session :: Pool que funciona muy bien bien.Usando Rack :: Session :: Pool with Sinatra

Ahora quiero que las sesiones expiren después de una cierta duración, pero no entiendo cómo instanciar el Rack :: Session :: Pool y lo usan en Sinatra.

Any Clue?

+1

Pero, ¿no usa ['Rack :: Session :: Pool'] (http://rack.rubyforge.org/doc/classes/Rack/Session/Pool.html) cookies? – ma11hew28

Respuesta

4

En el archivo 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 

Para iniciar carrera rackup app.ru, o el pasajero, etc. Esto debe envolver su aplicación en el grupo de la sesión y permitir su funcionalidad. No sé del todo por qué no necesita use como la mayoría de otros middleware.

Entiendo que no he probado esto en absoluto, no he tenido algo que necesitara piscinas de sesión todavía. Escribí esto desde el documentation para Rack :: Session :: Pool, que tenía un ejemplo en la parte superior de la página. Por lo tanto, tampoco puedo decirte exactamente cómo usarlo.

9

Sinatra es bastante potente, el truco de la pulga traviesa no funcionaba, pero esto no hizo:

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

Gracias!

Cuestiones relacionadas