Ho una richiesta esterna costosa (che richiede molto tempo) a un altro servizio Web che devo effettuare e vorrei memorizzarlo nella cache. Così ho cercato di usare questa idiom, inserendo la seguente nel controller di applicazione:Come posso memorizzare in cache un metodo con Ruby/Rails?
def get_listings
cache(:get_listings!)
end
def get_listings!
return Hpricot.XML(open(xml_feed))
end
Quando chiamo get_listings!
nel mio controller tutto è fresco, ma quando chiamo get_listings
Rails lamenta che nessun blocco è stato dato. E quando guardo su quel metodo vedo che effettivamente si aspetta un blocco, e inoltre sembra che quel metodo sia solo per l'uso nelle viste? Quindi immagino che, sebbene non sia stato affermato, l'esempio è solo pseudocodice.
Quindi la mia domanda è, come posso memorizzare qualcosa di simile? Ho provato vari altri modi, ma non riuscivo a capirlo. Grazie!
Sì, voglio sicuramente memorizzarlo tra le richieste. Avevo pensato di archiviarlo nel database e farlo manualmente, ma spero che ci sia un modo più semplice per farlo. –
Forse dare un'occhiata a docs/api per ActiveSupport :: Cache :: Store - potrebbe adattarsi a quello che stai cercando. Non ci ho lavorato io stesso ma sono sicuro che ci siano post di blog su di esso o altri qui che hanno utilizzato questo ad es. con memcached. – nruth