У меня есть дорогостоящий (отнимающий много времени) внешний запрос на другой веб-сервис, который мне нужно сделать, и я хотел бы его кэшировать. Поэтому я попытался использовать эту idiom, поставив в контроллер приложения следующее:
def get_listings
cache(:get_listings!)
end
def get_listings!
return Hpricot.XML(open(xml_feed))
end
Когда я вызываю get_listings!
в моем контроллере, все круто, но когда я звоню get_listings
, Rails жалуется, что никакого блока не было. И когда я просматриваю этот метод, я вижу, что он действительно ожидает блок, и, кроме того, похоже, что этот метод предназначен только для использования в представлениях? Поэтому я предполагаю, что, хотя не было указано, что пример - это просто псевдокод.
Итак, мой вопрос: как я кешу что-то вроде этого? Я пробовал разные способы, но не мог понять. Спасибо!