[ruby-it] Consiglio: dati attraverso i controller
Matteo Vaccari
vaccari a pobox.com
Lun 31 Dic 2007 16:14:45 CET
On Dec 19, 2007 10:30 AM, Enzo Ferro <buzman1 a hotmail.com> wrote:
> Carlo Pecchia wrote:
> > Allora vale la pena avere un unico punto in cui leggi le informazioni
> > (in formato XML, attraverso REST) dal backend...
> > In prima battuta suggerirei un filtro (o un helper) in
> > app/controller/application.rb in modo da averlo disponibile per TUTTI
> > i controller che andrai a scrivere.
> > L'unico dubbio � relativo alle prestazioni: in questo modo OGNI click
> > al tuo sito invoca una chiamata al backend e relativo processamento
> > dell'XML risultante.
> > Se questa "struttura" non cambia troppo frequentemente forse sarebbe
> > il caso di averla in un file statico (che aggiorni tramite un
> > cron...). Insomma � il principio della "cache" :)
>
> Quindi scarteresti l'idea di metterle nella sessione?
>
La sessione, come regola, dovrebbe essere più vuota possibile e comunque
contenere solo informazioni specifiche dell'utente.
Io lo metterei in una variabile di classe di application_controller. Userei
un metodo tipo:
def my_data_from_xml
@@my_data_from_xml ||= read_data_from_xml
end
dentro a application_controller.rb. Se non è chiaro il trucco del @@, puoi
immaginare che sia scritto così:
def my_data_from_xml
@@my_data_from_xml = @@my_data_from_xml || read_data_from_xml
end
che si legge: se @@my_data_from_xml è definito, restituisci il suo valore;
altrimenti chiama la read_data_from_xml, assegna il risultato a
@@my_data_from_xml, e restituiscilo. Lo scopo è di eseguire la read_data
una volta sola per tutti gli utenti e tutte le sessioni.
Se le informazioni sul file xml cambiano raramente, allora ti basta fare un
restart dell'applicazione quando cambiano e il nuovo valore verrà letto di
nuovo.
Matteo
Maggiori informazioni sulla lista
Ml