Tengo una solicitud externa costosa (que consume mucho tiempo) a otro servicio web que necesito hacer, y me gustaría guardarla en caché. Así que he tratado de utilizar este idiom, poniendo lo siguiente en el controlador de aplicación:¿Cómo guardo en caché un método con Ruby/Rails?
def get_listings
cache(:get_listings!)
end
def get_listings!
return Hpricot.XML(open(xml_feed))
end
Cuando llamo get_listings!
en mi controlador de todo lo que es bueno, pero cuando llamo get_listings
rieles se queja de que se le dio ningún bloque. Y cuando busco ese método veo que de hecho espera un bloqueo, y además parece que ese método es solo para usar en vistas. Así que supongo que, aunque no fue declarado, que el ejemplo es solo pseudocódigo.
Así que mi pregunta es, ¿cómo guardo en caché algo como esto? Intenté otras formas pero no pude resolverlo. ¡Gracias!
Sí, definitivamente quiero guardarlo en caché entre las solicitudes. Consideré almacenarlo en la base de datos y hacerlo manualmente, pero espero que haya una manera más fácil de hacerlo. –
Tal vez eche un vistazo a los documentos/api para ActiveSupport :: Cache :: Store - podría encajar con lo que está buscando. No he trabajado con él, pero estoy seguro de que hay publicaciones de blog en él o de otros aquí que han usado esto, p. con memcached – nruth