提交 5843069e 编写于 作者: S Santiago Pastorino

Rack body respond to each and not to join

This fixes undef `to_str' for Rack::Chunked::Body when using
caches_action + streaming on an action

Closes #5027
上级 4baaf0a0
......@@ -103,8 +103,10 @@ def caches_action(*actions)
end
def _save_fragment(name, options)
content = response_body
content = content.join if content.is_a?(Array)
content = ""
response_body.each do |parts|
content << parts
end
if caching_allowed?
write_fragment(name, content, options)
......
......@@ -237,6 +237,7 @@ class ActionCachingTestController < CachingController
caches_action :with_format_and_http_param, :cache_path => Proc.new { |c| { :key => 'value' } }
caches_action :layout_false, :layout => false
caches_action :record_not_found, :four_oh_four, :simple_runtime_error
caches_action :streaming
layout 'talk_from_action'
......@@ -296,6 +297,10 @@ def expire_with_url_string
expire_action url_for(:controller => 'action_caching_test', :action => 'index')
render :nothing => true
end
def streaming
render :text => "streaming", :stream => true
end
end
class MockTime < Time
......@@ -647,6 +652,13 @@ def test_simple_runtime_error_returns_500_for_multiple_requests
assert_response 500
end
def test_action_caching_plus_streaming
get :streaming
assert_response :success
assert_match(/streaming/, @response.body)
assert fragment_exist?('hostname.com/action_caching_test/streaming')
end
private
def content_to_cache
assigns(:cache_this)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册