2010-07-26 21 views
8

Tengo una aplicación web Sinatra que he creado usando enable :sessions donde accedo a mis datos de sesión con session[:mything].Rack :: Session :: Grupo con Sinatra

Ahora quiero almacenar datos en el lado del servidor (es decir, con las sesiones basadas en la base de datos) y no puedo entender cómo usar Rack::Session::Pool, que parece ser lo que necesito usar.

¿Cómo hago para convertir mi aplicación web para su uso con Pool?

Sé que necesito para agregar la línea

use Rack::Session::Pool 

lo que viene después? - ¡gracias por adelantado!

EDITAR: He aquí un ejemplo usando sesiones basadas en cookies:

require 'rubygems' 
require 'sinatra' 

enable :sessions 

get '/' do 
    session.merge!(params) 
    session.inspect 
end 

Visita /?hi=there luego visitar / y todavía se verá {'hi'=>'there'}, como ha sido almacenada en una cookie.

Respuesta

11

Simplemente reemplace la línea enable :sessions con use Rack::Session::Pool. Todo enable :session hace es agregar Rack::Session::Cookie a la pila (que desea evitar). El ayudante session seguirá funcionando.

+0

Rack :: Session :: Cookie proporciona administración simple de sesión basada en cookies. – Liber

+0

@Liber OP necesita un tipo diferente de sesión, no la que proporciona 'Rack :: Session :: Cookie', de ahí la respuesta de Konstantin Hasse. –

Cuestiones relacionadas