Ticket #3335: action_caching_for_non_success_status_codes.diff
| File action_caching_for_non_success_status_codes.diff, 2.0 kB (added by halfbyte, 2 years ago) |
|---|
-
actionpack/test/controller/caching_test.rb
old new 94 94 end 95 95 96 96 class ActionCachingTestController < ActionController::Base 97 caches_action :index 97 caches_action :index, :redirected, :forbidden 98 98 99 99 def index 100 100 @cache_this = Time.now.to_f.to_s 101 101 render :text => @cache_this 102 102 end 103 103 104 def redirected 105 redirect_to :action => 'index' 106 end 107 108 def forbidden 109 render :text => "..." 110 headers["Status"] = "403 Forbidden" 111 end 112 104 113 def expire 105 114 expire_action :controller => 'action_caching_test', :action => 'index' 106 115 render :nothing => true … … 192 201 assert_equal david_cache, @response.body 193 202 end 194 203 204 def test_redirect_not_cached 205 get :redirected 206 assert_response :redirect 207 reset! 208 209 get :redirected 210 assert_response :redirect 211 end 212 213 def test_forbidden_not_cached 214 get :forbidden 215 assert_response :forbidden 216 reset! 217 218 get :forbidden 219 assert_response :forbidden 220 end 221 195 222 def test_xml_version_of_resource_is_treated_as_different_cache 196 223 @mock_controller.mock_url_for = 'http://example.org/posts/' 197 224 @mock_controller.mock_path = '/posts/index.xml' -
actionpack/lib/action_controller/caching.rb
old new 202 202 end 203 203 204 204 def after(controller) 205 return if !@actions.include?(controller.action_name.intern) || controller.rendered_action_cache 205 return if !@actions.include?(controller.action_name.intern) || controller.rendered_action_cache || 206 controller.response.headers['Status'] != "200 OK" 206 207 controller.write_fragment(ActionCachePath.path_for(controller), controller.response.body) 207 208 end 208 209