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 = {})