Let me give you the background. I am using rxml for a lot of my views for a rails project. I also noticed that there is a lot of the XML being dynamically generated on data that doesn''t change that often. I worked on trying to cache the xml fragment that I needed but came to the quick realization that cache only handle ERB/RHTML files. Needless to say, I have spent some time creating an XML fragment cache for rxml files. A slight problem with it though. Let me present the code. It is derived directly from the cache and cache_erb_fragment routines. <code>module ActionView module Helpers module CacheHelper def cache_xml(xml, name ={}, &block) @controller.cache_xml_fragment(block, xml, name) end end end end module ActionController module Caching module Fragments def cache_xml_fragment(block, xml, name = {}, options = nil) unless perform_caching then block.call; return end if cache = read_fragment(name, options) xml << cache else buffer = '''' xml_builder = Builder::XmlMarkup.new(:target=>buffer) block.call(xml_builder) write_fragment(name,buffer, options) xml << buffer end end end end end</code> To use the cache_xml you pass the current xml object and the ''name'' of the fragment. This is a simplified example (w/o the dynamic loading of data) but the problem that occurs still happens. <code>directors = [''George Lukas'',''Steven Speilberg'',''Michael Bay''] xml.instruct! xml.directors do directors.each do |name| cache_xml(xml,:action=>''director'',:name=>name) do xml.director :name=>name end end end</code> On the initial load of the RXML file I can indeed see that each cache fragment is being created with a ''Cached fragment'' line on my dev log. This is the rendering of the initial XML: <code><directors> <director name="George Lukas"/> </directors></code> This is the expected output <code><directors> <director name="George Lukas"/> <director name="Steven Speilberg"/> <director name="Michael Bay"/> </directors></code> On a second request of the XML, everything renders correctly, but I am trying to figure out why it doesn''t happen on the initial request. I believe the problem occurs with the block call within cache_xml_fragment, but I have no idea what is causing the problem. If you have any questions please feel free to ask. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---