Class: ActionController::CgiResponse

Inherits:
AbstractResponse show all
Defined in:
lib/action_controller/cgi_process.rb

Overview

:nodoc:

Constant Summary

Constants inherited from AbstractResponse

AbstractResponse::DEFAULT_HEADERS

Instance Attribute Summary

Attributes inherited from AbstractResponse

#assigns, #body, #cookies, #headers, #layout, #redirected_to, #redirected_to_method_params, #request, #session, #template

Instance Method Summary collapse

Methods inherited from AbstractResponse

#assign_default_content_type_and_charset!, #charset, #charset=, #content_type, #content_type=, #etag, #etag=, #etag?, #last_modified, #last_modified=, #last_modified?, #location, #location=, #prepare!, #redirect, #sending_file?, #status, #status=

Constructor Details

#initialize(cgi) ⇒ CgiResponse

Returns a new instance of CgiResponse.



156
157
158
159
# File 'lib/action_controller/cgi_process.rb', line 156

def initialize(cgi)
  @cgi = cgi
  super()
end

Instance Method Details

#out(output = $stdout) ⇒ Object



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'lib/action_controller/cgi_process.rb', line 161

def out(output = $stdout)
  output.binmode      if output.respond_to?(:binmode)
  output.sync = false if output.respond_to?(:sync=)

  begin
    output.write(@cgi.header(@headers))

    if @cgi.__send__(:env_table)['REQUEST_METHOD'] == 'HEAD'
      return
    elsif @body.respond_to?(:call)
      # Flush the output now in case the @body Proc uses
      # #syswrite.
      output.flush if output.respond_to?(:flush)
      @body.call(self, output)
    else
      output.write(@body)
    end

    output.flush if output.respond_to?(:flush)
  rescue Errno::EPIPE, Errno::ECONNRESET
    # lost connection to parent process, ignore output
  end
end