]> git.openstreetmap.org Git - rails.git/blobdiff - config/initializers/streaming.rb
Vagrant deploy works
[rails.git] / config / initializers / streaming.rb
index 116ca51ddda71d7e514b28d625512ee5149bd9f3..db61e6b24041069f478d5ef09a5b5f2076155ab3 100644 (file)
@@ -1,29 +1,21 @@
-# Hack ActionController::Streaming to allow streaming from a file handle
+# Hack ActionController::DataStreaming to allow streaming from a file handle
 module ActionController
 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
     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
+        headers["Content-Length"] ||= file.size.to_s
+
         options[:filename] ||= File.basename(file.path) unless options[:url_based_filename]
         send_file_headers! options
 
         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
       else
+        headers["Content-Length"] ||= File.size(file).to_s
+
         old_send_file(file, options)
       end
     end
         old_send_file(file, options)
       end
     end