Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed cache_page to use the request url instead of the routing option…

…s when picking a save path (closes #8614) [josh]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7598 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit 7d9fe04b1d87b9f346649c9385a3c95121132653 1 parent a6f49d9
David Heinemeier Hansson dhh authored
19 actionpack/lib/action_controller/caching.rb
View
@@ -136,17 +136,20 @@ def expire_page(options = {})
end
# Manually cache the +content+ in the key determined by +options+. If no content is provided, the contents of response.body is used
- # If no options are provided, the current +options+ for this action is used. Example:
+ # If no options are provided, the requested url is used. Example:
# cache_page "I'm the cached content", :controller => "lists", :action => "show"
- def cache_page(content = nil, options = {})
+ def cache_page(content = nil, options = nil)
return unless perform_caching && caching_allowed
-
- if options.is_a?(Hash)
- path = url_for(options.merge(:only_path => true, :skip_relative_url_root => true, :format => params[:format]))
- else
- path = options
+
+ path = case options
+ when Hash
+ url_for(options.merge(:only_path => true, :skip_relative_url_root => true, :format => params[:format]))
+ when String
+ options
+ else
+ request.path
end
-
+
self.class.cache_page(content || response.body, path)
end
9 actionpack/test/controller/caching_test.rb
View
@@ -92,6 +92,15 @@ def test_should_expire_cache_with_custom_path
assert !File.exist?("#{FILE_STORE_PATH}/index.html")
end
+ uses_mocha("should_cache_ok_at_custom_path") do
+ def test_should_cache_ok_at_custom_path
+ @request.expects(:path).returns("/index.html")
+ get :ok
+ assert_response :ok
+ assert File.exist?("#{FILE_STORE_PATH}/index.html")
+ end
+ end
+
[:ok, :no_content, :found, :not_found].each do |status|
[:get, :post, :put, :delete].each do |method|
unless method == :get and status == :ok
Please sign in to comment.
Something went wrong with that request. Please try again.