[ruby-it] Rails: variabili globali troppo globali
Paolo Montrasio
paolo a paolomontrasio.com
Mar 3 Mar 2009 19:31:38 CET
Alessandro Scolavino wrote:
> Io lo uso quasi sempre, in pratica genera una tabella nuova e ci salva
> dentro i dati della session, molto comodo e molto veloce (e sopratutto
> ti puoi portare dietro grossi moli di dati)
>
>> config.action_controller.session_store = :active_record_store
>>
>> dentro config/environments.rb, per� non ho mai provato, non so come
>> funziona.
Attenzione però alle race conditions tra chiamate diverse dello stesso
browser. Sono comuni quando ci sono applicazioni ajax che vanno a
cambiare dati in sessione e se non si sa che possono capitare si
impazzisce per giorni a cercare misteriosi bug che fanno sparire i dati
appena memorizzati in session[].
In due parole: la chiamata ajax 1 inizia a fare operazione e a scrivere
dati in sessione, la chiamata ajax 2 inizia anche lei a lavorare e
finisce prima della 1; quando la 1 finisce va a memorizzare la sua
sessione sovrascrivendo qualsiasi cosa la 2 abbia fatto.
Per rimediare al problema esiste una variante di active_record_store che
si chiama SmartSessionStore. La uso da un paio d'anni con soddisfazione
anche se ricordo di averla customizzata un po' (ma non il perché)
http://svn1.hosted-projects.com/fcheung/smart_session_store/trunk/
Meglio ancora è evitare di usare la sessione se non per dati molto
piccoli e in situazioni che non abbiano race conditions. Solo che
all'inizio della mia esperienza in Rails venivo da Java dove in sessione
si infila di tutto. Ora non lo faccio più :-)
Paolo
--
Posted via http://www.ruby-forum.com/.
More information about the Ml
mailing list