3

このデータは頻繁に更新されないため、Youtube API への呼び出しを最小限に抑えたいと考えています。これをキャッシュしようとすると:

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.

何か案は?

4

1 に答える 1

5

Nokogiri オブジェクトではなく XML をキャッシュしたい場合があります。これを試して:

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)
于 2012-04-27T21:56:55.800 に答える