lib/action_controller/caching.rb in actionpack-1.3.1 vs lib/action_controller/caching.rb in actionpack-1.4.0

- old
+ new

@@ -191,21 +191,21 @@ # Fragment caching is used for caching various blocks within templates without caching the entire action as a whole. This is useful when # certain elements of an action change frequently or depend on complicated state while other parts rarely change or can be shared amongst multiple # parties. The caching is doing using the cache helper available in the Action View. A template with caching might look something like: # # <b>Hello <%= @name %></b> - # <% cache(binding) do %> + # <% cache do %> # All the topics in the system: # <%= render_collection_of_partials "topic", Topic.find_all %> # <% end %> # # This cache will bind to the name of action that called it. So you would be able to invalidate it using # <tt>expire_fragment(:controller => "topics", :action => "list")</tt> -- if that was the controller/action used. This is not too helpful # if you need to cache multiple fragments per action or if the action itself is cached using <tt>caches_action</tt>. So instead we should # qualify the name of the action used with something like: # - # <% cache(binding, :action => "list", :action_suffix => "all_topics") do %> + # <% cache(:action => "list", :action_suffix => "all_topics") do %> # # That would result in a name such as "/topics/list/all_topics", which wouldn't conflict with any action cache and neither with another # fragment using a different suffix. Note that the URL doesn't have to really exist or be callable. We're just using the url_for system # to generate unique cache names that we can refer to later for expirations. The expiration call for this example would be # <tt>expire_fragment(:controller => "topics", :action => "list", :action_suffix => "all_topics")</tt>. @@ -239,25 +239,25 @@ # ActionController::Caching::Fragments::FileStore.new("localhost") module Fragments def self.append_features(base) #:nodoc: super base.class_eval do - @@cache_store = MemoryStore.new + @@fragment_cache_store = MemoryStore.new cattr_accessor :fragment_cache_store end end # Called by CacheHelper#cache - def cache_erb_fragment(binding, name = {}, options = {}) - unless perform_caching then yield; return end + def cache_erb_fragment(block, name = {}, options = {}) + unless perform_caching then block.call; return end - buffer = eval("_erbout", binding) + buffer = eval("_erbout", block.binding) if cache = read_fragment(name, options) buffer.concat(cache) else pos = buffer.length - yield + block.call write_fragment(name, buffer[pos..-1], options) end end def write_fragment(name, content, options = {})