Class: ActionController::Streaming::Body

Inherits:
Object
  • Object
show all
Defined in:
lib/action_controller/metal/streaming.rb

Overview

:nodoc:

Constant Summary collapse

TERM =
"\r\n"
TAIL =
"0#{TERM}"

Instance Method Summary collapse

Constructor Details

#initialize(body) ⇒ Body

Store the response body to be chunked.



212
213
214
# File 'lib/action_controller/metal/streaming.rb', line 212

def initialize(body)
  @body = body
end

Instance Method Details

#closeObject

Close the response body if the response body supports it.



231
232
233
# File 'lib/action_controller/metal/streaming.rb', line 231

def close
  @body.close if @body.respond_to?(:close)
end

#each {|TAIL| ... } ⇒ Object

For each element yielded by the response body, yield the element in chunked encoding.

Yields:



218
219
220
221
222
223
224
225
226
227
228
# File 'lib/action_controller/metal/streaming.rb', line 218

def each(&block)
  term = TERM
  @body.each do |chunk|
    size = chunk.bytesize
    next if size == 0

    yield [size.to_s(16), term, chunk.b, term].join
  end
  yield TAIL
  yield term
end