Make hack for file streaming work with rails 3.1.0

This commit is contained in:
Tom Hughes 2011-09-24 18:21:56 +01:00
parent 8d520578a1
commit c0fe77fd02

View file

@ -1,28 +1,16 @@
# Hack ActionController::Streaming to allow streaming from a file handle
# Hack ActionController::DataStreaming to allow streaming from a file handle
module ActionController
module Streaming
module DataStreaming
alias_method :old_send_file, :send_file
def send_file(file, options = {})
if file.is_a? File or file.is_a? Tempfile
options[:length] ||= file.stat.size
options[:filename] ||= File.basename(file.path) unless options[:url_based_filename]
send_file_headers! options
@performed_render = false
if options[:stream]
render :status => options[:status], :text => Proc.new { |response, output|
logger.info "Streaming file #{file.path}" unless logger.nil?
len = options[:buffer_size] || 4096
while buf = file.read(len)
output.write(buf)
end
}
else
logger.info "Sending file #{file.path}" unless logger.nil?
render :status => options[:status], :text => file.read
end
self.status = options[:status] || 200
self.content_type = options[:content_type] if options.key?(:content_type)
self.response_body = file
else
old_send_file(file, options)
end