Tôi có một yêu cầu bên ngoài tốn kém (tốn thời gian) cho một dịch vụ web khác mà tôi cần thực hiện và tôi muốn lưu nó vào bộ nhớ cache. Vì vậy, tôi cố gắng sử dụng idiom này, bằng cách đặt những điều sau đây trong bộ điều khiển ứng dụng:Làm cách nào để cache một phương thức với Ruby/Rails?
def get_listings
cache(:get_listings!)
end
def get_listings!
return Hpricot.XML(open(xml_feed))
end
Khi tôi gọi get_listings!
trong điều khiển tất cả mọi thứ của tôi là mát mẻ, nhưng khi tôi gọi get_listings
Rails phàn nàn rằng không có khối đã được đưa ra. Và khi tôi nhìn lên phương pháp đó tôi thấy rằng nó thực sự mong đợi một khối, và ngoài ra nó trông giống như phương pháp đó là chỉ để sử dụng trong quan điểm? Vì vậy, tôi đoán rằng mặc dù nó không được tuyên bố, rằng ví dụ chỉ là giả mã.
Vì vậy, câu hỏi của tôi là, làm thế nào để lưu vào bộ nhớ cache một cái gì đó như thế này? Tôi đã thử nhiều cách khác nhau nhưng không thể hiểu được. Cảm ơn!
Vâng, tôi chắc chắn muốn lưu vào bộ nhớ cache giữa các yêu cầu. Tôi đã xem xét việc lưu trữ nó trong cơ sở dữ liệu và làm tất cả bằng tay, nhưng tôi hy vọng có một cách dễ dàng hơn để làm điều đó. –
Có thể hãy xem tài liệu/api cho ActiveSupport :: Cache :: Store - có thể phù hợp với những gì bạn đang theo dõi. Tôi đã không làm việc với nó bản thân mình nhưng chắc chắn có bài đăng trên blog trên đó hoặc những người khác ở đây đã sử dụng ví dụ này với memcached. – nruth