2012-04-26 2 views
3

이 데이터가 자주 새로 고침되지 않으므로 Youtube API에 대한 통화를 최소화하고 싶습니다. 나는이를 캐시 할 때 : 캐시 Youtube API Nokogiri 오류가있는 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. 

어떤 아이디어?

답변

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) 
+0

굉장합니다. 하지만 전체 피드에서 읽는 동안 'File name too long'이 표시됩니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? – Marc

+0

생명의 은인! 감사 –