存在Nokogiri错误缓存Youtube API XML响应 - 编组错误?
问题描述:
我想尽量减少对Youtube API的调用,因为这些数据不会经常刷新。当我尝试缓存此:存在Nokogiri错误缓存Youtube API XML响应 - 编组错误?
Rails.cache.fetch("youtube-#{@yt_name}", :expires_in => 1.day) do
@youtube_doc = Nokogiri::XML(open("https://gdata.youtube.com/feeds/api/users/#{@yt_name}/uploads"))
end
我在Heroku上得到一个错误:
Marshalling error for key 'youtube-NAME': no marshal_dump is defined for class Nokogiri::XML::NodeSet
You are trying to cache a Ruby object which cannot be serialized to memcached.
任何想法?
答
您可能想要缓存XML而不是Nokogiri对象。试试这个:
xml = Rails.cache.fetch("youtube-#{@yt_name}", :expires_in => 1.day) do
open("https://gdata.youtube.com/feeds/api/users/#{@yt_name}/uploads").read
end
@youtube_doc = Nokogiri::XML(xml)
太棒了。但是,由于它在整个Feed中读取,所以我得到的'文件名太长'。有关如何解决此问题的任何想法? – Marc 2012-04-28 03:18:05
救命!谢谢 – 2013-01-02 12:27:31