Class: Attache::FileResponseBody

Inherits:
Object
  • Object
show all
Defined in:
lib/attache/file_response_body.rb

Instance Method Summary collapse

Constructor Details

#initialize(file, range_start = nil, range_end = nil) ⇒ FileResponseBody

Returns a new instance of FileResponseBody.



2
3
4
5
6
# 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

Instance Method Details

#eachObject

adapted from rack/file.rb



9
10
11
12
13
14
15
16
17
18
19
# 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