[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