[ruby-it] problemi con session e ajax

Paolo Montrasio paolo a paolomontrasio.com
Mar 8 Dic 2009 18:19:58 CET


Piccola premessa: quando ho iniziato con Rails venivo dal mondo Java ed 
usavo le session con entusiasmo tipicamente javista (javico?) per cui ho 
finito presto per incorrere in questi problemi e ho usato una versione 
rimaneggiata di smart session store per risolverli. Poi ho messo la 
testa a posto, per così dire, ed ora in session non metto quasi più 
nulla. L'approccio restful alla progettazione delle applicazioni aiuta 
molto a tenere le session scarne.

Venendo a noi dovresti identificare precisamente il problema e poi 
capire se puoi applicare il metodo di smart session store al cookie 
store. La sensazione è che non si possa. Ho però anche la sensazione che 
per quanto si transazionalizzino gli aggiornamenti della sessione non si 
possa risolvere il problema in generale: potrebbero esserci due thread 
di esecuzione nel browser con assunzioni completamente diverse sullo 
stato della sessione e potrebbe essere impossibile riconciliarle. 
L'unica cosa che penso si possa fare è risolvere il tuo problema 
particolare, magari con altre soluzioni. Ad esempio: l'id della chat 
aperta non si può memorizzare nell'url invece che nella session? Sembra 
un approccio restful

POST /chat/1 manda un messaggio
GET /chat/1 polla per un messaggio

Ok, questa non è del tutto restful perché ritorna valori diversi ogni 
volta, ma puoi leggere 
http://stackoverflow.com/questions/405950/what-is-a-restful-way-of-monitoring-a-rest-resource-for-changes 
e 
http://stackoverflow.com/questions/568897/event-based-interaction-style-in-rest 
per soluzioni alternative.

Paolo

Matteo Folin wrote:
> Paolo Montrasio wrote:
>> Di solito questi sono proprio problemi di concorrenza. Se usi il cookie 
>> session store ti basterà tracciare le chiamate http, ad esempio con 
>> livehttpheaders (firefox) e vedere i valori dei cookie cambiare (sono 
>> codificati, ma il cambiamento si vede lo stesso). Se usi un session 
>> store su file system o su database devi ragionarci un po' e tracciare le 
>> varie chiamate. Il problema è spiegato molto bene a 
>> http://www.paulbutcher.com/2007/05/race-conditions-in-rails-sessions-and-how-to-fix-them/
>> Ci ho sbattuto il testone pure io.
>> 
>> Paolo
> 
> Ok. Direi proprio che abbiamo individuato il problema. E' indubbiamente 
> un problema di concorrenza.
> Dalla tua esperienza mi conviene passare subito le session sul db e 
> usare il plugin smart_session_store o ha senso cercare di aggirare il 
> problema continuando ad  utilizzare il cookieStore ?
> Una cosa che mi lascia perplesso è che nell'articolo (e nel ticket) si 
> dice esplicitamente che per vedere il problema bisogna usare una coppia 
> di mongrel, invece io ce l'ho anche con webrick.
> In pratica però il session store si può usare solo per richieste non 
> ajax.

-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list