diff options
author | Cheah Chu Yeow <chuyeow@gmail.com> | 2011-02-27 22:57:46 +0800 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2011-03-02 13:11:07 -0200 |
commit | 2ee55557440a644453482a678e4ff08a4b5ebd3e (patch) | |
tree | d20cf2d49728bd79a7863d905bd3771ae1a2e65f | |
parent | e4cf28f3a0491620787d8e06d3a47918c5accc9b (diff) | |
download | rails-2ee55557440a644453482a678e4ff08a4b5ebd3e.tar.gz rails-2ee55557440a644453482a678e4ff08a4b5ebd3e.tar.bz2 rails-2ee55557440a644453482a678e4ff08a4b5ebd3e.zip |
Fix Action caching bug where an action that has a non-cacheable response always renders a nil response body. It now correctly renders the response body.
Note that only GET and HTTP 200 responses can be cached.
[#6480 state:committed]
Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
-rw-r--r-- | actionpack/lib/action_controller/caching/actions.rb | 8 | ||||
-rw-r--r-- | actionpack/test/controller/caching_test.rb | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/actionpack/lib/action_controller/caching/actions.rb b/actionpack/lib/action_controller/caching/actions.rb index a4bac3caed..a1c582560c 100644 --- a/actionpack/lib/action_controller/caching/actions.rb +++ b/actionpack/lib/action_controller/caching/actions.rb @@ -103,12 +103,14 @@ module ActionController #:nodoc: end def _save_fragment(name, options) - return unless caching_allowed? - content = response_body content = content.join if content.is_a?(Array) - write_fragment(name, content, options) + if caching_allowed? + write_fragment(name, content, options) + else + content + end end protected diff --git a/actionpack/test/controller/caching_test.rb b/actionpack/test/controller/caching_test.rb index cc393d3ef4..01f3e8f2b6 100644 --- a/actionpack/test/controller/caching_test.rb +++ b/actionpack/test/controller/caching_test.rb @@ -559,6 +559,11 @@ class ActionCacheTest < ActionController::TestCase assert_response 404 end + def test_four_oh_four_renders_content + get :four_oh_four + assert_equal "404'd!", @response.body + end + def test_simple_runtime_error_returns_500_for_multiple_requests get :simple_runtime_error assert_response 500 |