Rack::Response
Represents an HTTP response generated by a controller action. Use it to retrieve the current state of the response, or customize the response. It can either represent a real HTTP response (i.e. one that is meant to be sent back to the web browser) or a TestResponse (i.e. one that is generated from integration tests).
Response is mostly a Ruby on Rails framework implementation detail, and should never be used directly in controllers. Controllers should use the methods defined in ActionController::Base instead. For example, if you want to set the HTTP response’s content MIME type, then use ActionControllerBase#headers instead of Response#headers.
Nevertheless, integration tests may want to inspect controller responses in more detail, and that’s when Response can be useful for application developers. Integration test methods such as ActionDispatch::Integration::Session#get and ActionDispatch::Integration::Session#post return objects of type TestResponse (which are of course also of type Response).
For example, the following demo integration test prints the body of the controller response to the console:
class DemoControllerTest < ActionDispatch::IntegrationTest
def test_print_root_path_to_console
get('/')
puts @response.body
end
end
Sets the HTTP response’s content MIME type. For example, in the controller you could write this:
response.content_type = "text/plain"
If a character set has been defined for this response (see charset=) then the character set information will also be included in the content type information.
Sets the HTTP response’s content MIME type. For example, in the controller you could write this:
response.content_type = "text/plain"
If a character set has been defined for this response (see charset=) then the character set information will also be included in the content type information.
# File lib/action_dispatch/http/response.rb, line 99
99: def body
100: str = ''
101: each { |part| str << part.to_s }
102: str
103: end
# File lib/action_dispatch/http/response.rb, line 107
107: def body=(body)
108: @blank = true if body == EMPTY
109: @body = body.respond_to?(:to_str) ? [body] : body
110: end
# File lib/action_dispatch/http/response.rb, line 112
112: def body_parts
113: @body
114: end
Returns a String to ensure compatibility with Net::HTTPResponse
# File lib/action_dispatch/http/response.rb, line 78
78: def code
79: @status.to_s
80: end
# File lib/action_dispatch/http/response.rb, line 149
149: def each(&callback)
150: if @body.respond_to?(:call)
151: @writer = lambda { |x| callback.call(x) }
152: @body.call(self, self)
153: else
154: @body.each { |part| callback.call(part.to_s) }
155: end
156:
157: @writer = callback
158: @block.call(self) if @block
159: end
# File lib/action_dispatch/http/response.rb, line 116
116: def location
117: headers['Location']
118: end
# File lib/action_dispatch/http/response.rb, line 121
121: def location=(url)
122: headers['Location'] = url
123: end
# File lib/action_dispatch/http/response.rb, line 82
82: def message
83: Rack::Utils::HTTP_STATUS_CODES[@status]
84: end
# File lib/action_dispatch/http/response.rb, line 87
87: def respond_to?(method)
88: if method.to_sym == :to_path
89: @body.respond_to?(:to_path)
90: else
91: super
92: end
93: end
The response code of the request
# File lib/action_dispatch/http/response.rb, line 73
73: def response_code
74: @status
75: end
# File lib/action_dispatch/http/response.rb, line 68
68: def status=(status)
69: @status = Rack::Utils.status_code(status)
70: end
# File lib/action_dispatch/http/response.rb, line 139
139: def to_a
140: assign_default_content_type_and_charset!
141: handle_conditional_get!
142: self["Set-Cookie"] = self["Set-Cookie"].join("\n") if self["Set-Cookie"].respond_to?(:join)
143: self["ETag"] = @_etag if @_etag
144: super
145: end
# File lib/action_dispatch/http/response.rb, line 185
185: def assign_default_content_type_and_charset!
186: return if headers[CONTENT_TYPE].present?
187:
188: @content_type ||= Mime::HTML
189: @charset ||= self.class.default_charset
190:
191: type = @content_type.to_s.dup
192: type << "; charset=#{@charset}" unless @sending_file
193:
194: headers[CONTENT_TYPE] = type
195: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.