Parent

Included Modules

Class Index [+]

Quicksearch

ActionDispatch::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

Constants

EMPTY
CONTENT_TYPE

Attributes

request[RW]
blank[RW]
header[W]
sending_file[W]
charset[RW]

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.

content_type[RW]

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.

Public Instance Methods

body() click to toggle source
     # 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
body=(body) click to toggle source
     # 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
body_parts() click to toggle source
     # File lib/action_dispatch/http/response.rb, line 112
112:     def body_parts
113:       @body
114:     end
code() click to toggle source

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
cookies() click to toggle source

Returns the response cookies, converted to a Hash of (name => value) pairs

  assert_equal 'AuthorOfNewPage', r.cookies['author']
     # File lib/action_dispatch/http/response.rb, line 170
170:     def cookies
171:       cookies = {}
172:       if header = self["Set-Cookie"]
173:         header = header.split("\n") if header.respond_to?(:to_str)
174:         header.each do |cookie|
175:           if pair = cookie.split(';').first
176:             key, value = pair.split("=").map { |v| Rack::Utils.unescape(v) }
177:             cookies[key] = value
178:           end
179:         end
180:       end
181:       cookies
182:     end
each(&callback) click to toggle source
     # 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
location() click to toggle source
     # File lib/action_dispatch/http/response.rb, line 116
116:     def location
117:       headers['Location']
118:     end
Also aliased as: redirect_url
location=(url) click to toggle source
     # File lib/action_dispatch/http/response.rb, line 121
121:     def location=(url)
122:       headers['Location'] = url
123:     end
message() click to toggle source
    # File lib/action_dispatch/http/response.rb, line 82
82:     def message
83:       Rack::Utils::HTTP_STATUS_CODES[@status]
84:     end
Also aliased as: status_message
prepare!() click to toggle source
Alias for: to_a
redirect_url() click to toggle source
Alias for: location
respond_to?(method) click to toggle source
    # 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
response_code() click to toggle source

The response code of the request

    # File lib/action_dispatch/http/response.rb, line 73
73:     def response_code
74:       @status
75:     end
status=(status) click to toggle source
    # File lib/action_dispatch/http/response.rb, line 68
68:     def status=(status)
69:       @status = Rack::Utils.status_code(status)
70:     end
status_message() click to toggle source
Alias for: message
to_a() click to toggle source
     # 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
Also aliased as: prepare!
to_path() click to toggle source
    # File lib/action_dispatch/http/response.rb, line 95
95:     def to_path
96:       @body.to_path
97:     end
write(str) click to toggle source
     # File lib/action_dispatch/http/response.rb, line 161
161:     def write(str)
162:       str = str.to_s
163:       @writer.call str
164:       str
165:     end

Private Instance Methods

assign_default_content_type_and_charset!() click to toggle source
     # 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.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.