+++ /dev/null
-# Hack ActionController::Streaming to allow streaming from a file handle
-module ActionController
- module Streaming
- 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
- else
- old_send_file(file, options)
- end
- end
- end
-end