class Attache::FileResponseBody

Public Class Methods

new(file, range_start = nil, range_end = nil) click to toggle source
# File lib/attache/file_response_body.rb, line 2
def initialize(file, range_start = nil, range_end = nil)
  @file        = file
  @range_start = range_start || 0
  @range_end   = range_end || File.size(@file.path)
end

Public Instance Methods

each() { |part| ... } click to toggle source

adapted from rack/file.rb

# File lib/attache/file_response_body.rb, line 9
def each
  @file.seek(@range_start)
  remaining_len = @range_end
  while remaining_len > 0
    part = @file.read([8192, remaining_len].min)
    break unless part
    remaining_len -= part.length

    yield part
  end
end