How do I use a Rails cache to store Nokogiri objects?
Store the xml as string, not the object and parse them once you get them out of the cache.
Edit: response to comment
Cache this instead
nokogiri_object.to_xml
Edit2: response to comment. Something along this lines. You will need to post more code if you want more specific help.
nokogiri_object = Nokogiri::XML(cache.fetch('xml_doc'))
Edit3: Response to 'Thanks but what is the code for "Store serialized object in cache"? I thought the body of the "$cache.fetch(url) {" would take care of storing and then retrieving things?'
cache.write('url', xml_or_serialized_nokogiri_string)
User Nokogiri's Serialize functionality:
$cache = ActiveSupport::Cache::MemoryStore.new
noko_object = Nokogiri::HTML::Document.new
serial = noko_object.serialize
$cache.write(url, serial)
// Serialized Nokogiri document is now in store at the URL key.
result = $cache.read(url)
noko_object = Nokogiri::HTML::Document.new(result)
// noko_object is now the original document again :)
Check out the documentation here for more information.