2010-06-23 14 views
5

Sono un nuovo utente di Ruby on Rails e ho una domanda. Ho un'idea di come vorrei che fosse il mio DB degli utenti, ma mi chiedevo se aggiungere o meno un valore aggiuntivo ad esso. Fondamentalmente ho bisogno di una variabile per segnalare a tutti gli utenti che è sicuro procedere con una certa azione. Questa variabile sarebbe persistente su tutti gli utenti e dovrebbe essere visibile a tutti gli utenti, ma voglio che il server sia in grado di cambiare anche questa variabile. Quando programmavo in altri linguaggi, userei una variabile globale, quindi volevo controllare se anche qui fosse così. Se è così, questo sarebbe l'approccio migliore per risolverlo: Site-Wide Global Variables in Ruby on Rails. Inoltre, come aggiornerei le variabili globali. Grazie per qualsiasi aiuto!Ruby on Rails - Global Variable?

risposta

7

Una variabile globale non soddisfa le tue necessità. Non si sviluppa su tutti i processi di Ruby. Se il tuo server web genera 5 processi di ruby ​​per gestire 5 richieste allo stesso tempo, la variabile definita nel primo processo non sarà visibile agli altri.

Ci sono altre soluzioni disponibili. È possibile utilizzare un database e memorizzare il flag/le informazioni nel database. Altrimenti, puoi usare un file e memorizzare il valore nel file. La soluzione migliore sarebbe un'origine dati condivisa in memoria, come memcached o Redis.

+1

memcache sarebbe eccessivo se questa è l'unica variabile memorizzata –