From 7306675fe276a7586afa8526068e4698a6d360cf Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 20 Jan 2005 17:26:14 +0000 Subject: Removed the need for passing the binding when using CacheHelper#cache git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@472 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/caching.rb | 12 ++++++------ actionpack/lib/action_view/helpers/cache_helper.rb | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index bd76b3f61d..d046c11c2f 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Removed the need for passing the binding when using CacheHelper#cache + * Added TestResponse#binary_content that'll return as a string the data sent through send_data/send_file for testing #500 [Alexey] * Added @request.env['RAW_POST_DATA'] for people who need access to the data before Ruby's CGI has parsed it #505 [bitsweat] diff --git a/actionpack/lib/action_controller/caching.rb b/actionpack/lib/action_controller/caching.rb index cc80217bd6..21d9c69831 100644 --- a/actionpack/lib/action_controller/caching.rb +++ b/actionpack/lib/action_controller/caching.rb @@ -193,7 +193,7 @@ module ActionController #:nodoc: # parties. The caching is doing using the cache helper available in the Action View. A template with caching might look something like: # # Hello <%= @name %> - # <% cache(binding) do %> + # <% cache do %> # All the topics in the system: # <%= render_collection_of_partials "topic", Topic.find_all %> # <% end %> @@ -203,7 +203,7 @@ module ActionController #:nodoc: # if you need to cache multiple fragments per action or if the action itself is cached using caches_action. 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 @@ -247,16 +247,16 @@ module ActionController #:nodoc: end # Called by CacheHelper#cache - def cache_erb_fragment(binding, name = {}, options = {}) - unless perform_caching then yield; return end + def cache_erb_fragment(name = {}, options = {}, &block) + unless perform_caching then block.call; return end - buffer = eval("_erbout", binding) + buffer = eval("_erbout", block) 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 diff --git a/actionpack/lib/action_view/helpers/cache_helper.rb b/actionpack/lib/action_view/helpers/cache_helper.rb index b44b436ef4..9353e5a694 100644 --- a/actionpack/lib/action_view/helpers/cache_helper.rb +++ b/actionpack/lib/action_view/helpers/cache_helper.rb @@ -2,7 +2,7 @@ module ActionView module Helpers # See ActionController::Caching::Fragments for usage instructions. module CacheHelper - def cache(binding, name = {}) + def cache(name = {}) @controller.cache_erb_fragment(binding, name) { yield } end end -- cgit v1.2.3