Ich habe eine teure (zeitaufwendige) externe Anfrage an einen anderen Webservice, den ich machen muss, und ich möchte ihn zwischenspeichern. Also habe ich versucht, diese idiom zu verwenden, indem Sie die folgende in der Applikationssteuerung setzen:Wie cache ich eine Methode mit Ruby/Rails?
def get_listings
cache(:get_listings!)
end
def get_listings!
return Hpricot.XML(open(xml_feed))
end
Als ich get_listings!
in meinem Controller alles nennen, ist cool, aber wenn ich rufe get_listings
Rails beklagt, dass kein Block gegeben wurde. Und wenn ich diese Methode nachschaue, sehe ich, dass sie tatsächlich einen Block erwartet, und außerdem sieht es so aus, als ob diese Methode nur für Ansichten verwendet wird. Ich vermute also, dass, obwohl nicht gesagt wurde, das Beispiel nur Pseudocode ist.
Also meine Frage ist, wie cache ich so etwas? Ich habe verschiedene andere Möglichkeiten ausprobiert, konnte es aber nicht herausfinden. Vielen Dank!
Ja, ich möchte es definitiv zwischen Anfragen zwischenspeichern. Ich hatte darüber nachgedacht, es in der Datenbank zu speichern und alles manuell zu machen, aber ich hoffe, dass es einen einfacheren Weg gibt. –
Vielleicht werfen Sie einen Blick auf die docs/api für ActiveSupport :: Cache :: Store - könnte passen, was Sie suchen. Ich habe nicht selbst damit gearbeitet, bin aber sicher, dass es Blogposts oder andere hier gibt, die dieses z. mit Memcached. – nruth