actionpack 4.2.10 → 7.2.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of actionpack might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CHANGELOG.md +86 -600
- data/MIT-LICENSE +1 -1
- data/README.rdoc +13 -14
- data/lib/abstract_controller/asset_paths.rb +5 -1
- data/lib/abstract_controller/base.rb +166 -136
- data/lib/abstract_controller/caching/fragments.rb +149 -0
- data/lib/abstract_controller/caching.rb +68 -0
- data/lib/abstract_controller/callbacks.rb +126 -57
- data/lib/abstract_controller/collector.rb +13 -15
- data/lib/abstract_controller/deprecator.rb +9 -0
- data/lib/abstract_controller/error.rb +8 -0
- data/lib/abstract_controller/helpers.rb +181 -132
- data/lib/abstract_controller/logger.rb +5 -1
- data/lib/abstract_controller/railties/routes_helpers.rb +10 -3
- data/lib/abstract_controller/rendering.rb +56 -56
- data/lib/abstract_controller/translation.rb +29 -15
- data/lib/abstract_controller/url_for.rb +15 -11
- data/lib/abstract_controller.rb +21 -5
- data/lib/action_controller/api/api_rendering.rb +18 -0
- data/lib/action_controller/api.rb +154 -0
- data/lib/action_controller/base.rb +219 -155
- data/lib/action_controller/caching.rb +28 -68
- data/lib/action_controller/deprecator.rb +9 -0
- data/lib/action_controller/form_builder.rb +55 -0
- data/lib/action_controller/log_subscriber.rb +35 -22
- data/lib/action_controller/metal/allow_browser.rb +119 -0
- data/lib/action_controller/metal/basic_implicit_render.rb +17 -0
- data/lib/action_controller/metal/conditional_get.rb +259 -122
- data/lib/action_controller/metal/content_security_policy.rb +86 -0
- data/lib/action_controller/metal/cookies.rb +9 -5
- data/lib/action_controller/metal/data_streaming.rb +87 -104
- data/lib/action_controller/metal/default_headers.rb +21 -0
- data/lib/action_controller/metal/etag_with_flash.rb +22 -0
- data/lib/action_controller/metal/etag_with_template_digest.rb +35 -26
- data/lib/action_controller/metal/exceptions.rb +71 -24
- data/lib/action_controller/metal/flash.rb +26 -19
- data/lib/action_controller/metal/head.rb +45 -36
- data/lib/action_controller/metal/helpers.rb +80 -64
- data/lib/action_controller/metal/http_authentication.rb +297 -244
- data/lib/action_controller/metal/implicit_render.rb +57 -9
- data/lib/action_controller/metal/instrumentation.rb +76 -64
- data/lib/action_controller/metal/live.rb +238 -176
- data/lib/action_controller/metal/logging.rb +22 -0
- data/lib/action_controller/metal/mime_responds.rb +177 -166
- data/lib/action_controller/metal/parameter_encoding.rb +84 -0
- data/lib/action_controller/metal/params_wrapper.rb +145 -118
- data/lib/action_controller/metal/permissions_policy.rb +38 -0
- data/lib/action_controller/metal/rate_limiting.rb +62 -0
- data/lib/action_controller/metal/redirecting.rb +203 -64
- data/lib/action_controller/metal/renderers.rb +108 -65
- data/lib/action_controller/metal/rendering.rb +216 -56
- data/lib/action_controller/metal/request_forgery_protection.rb +496 -163
- data/lib/action_controller/metal/rescue.rb +19 -21
- data/lib/action_controller/metal/streaming.rb +179 -138
- data/lib/action_controller/metal/strong_parameters.rb +1058 -382
- data/lib/action_controller/metal/testing.rb +11 -17
- data/lib/action_controller/metal/url_for.rb +37 -21
- data/lib/action_controller/metal.rb +236 -138
- data/lib/action_controller/railtie.rb +89 -11
- data/lib/action_controller/railties/helpers.rb +5 -1
- data/lib/action_controller/renderer.rb +161 -0
- data/lib/action_controller/template_assertions.rb +13 -0
- data/lib/action_controller/test_case.rb +425 -497
- data/lib/action_controller.rb +44 -22
- data/lib/action_dispatch/constants.rb +34 -0
- data/lib/action_dispatch/deprecator.rb +9 -0
- data/lib/action_dispatch/http/cache.rb +119 -63
- data/lib/action_dispatch/http/content_disposition.rb +47 -0
- data/lib/action_dispatch/http/content_security_policy.rb +364 -0
- data/lib/action_dispatch/http/filter_parameters.rb +36 -34
- data/lib/action_dispatch/http/filter_redirect.rb +24 -12
- data/lib/action_dispatch/http/headers.rb +66 -31
- data/lib/action_dispatch/http/mime_negotiation.rb +106 -75
- data/lib/action_dispatch/http/mime_type.rb +196 -136
- data/lib/action_dispatch/http/mime_types.rb +25 -7
- data/lib/action_dispatch/http/parameters.rb +97 -45
- data/lib/action_dispatch/http/permissions_policy.rb +187 -0
- data/lib/action_dispatch/http/rack_cache.rb +6 -0
- data/lib/action_dispatch/http/request.rb +299 -170
- data/lib/action_dispatch/http/response.rb +311 -160
- data/lib/action_dispatch/http/upload.rb +52 -23
- data/lib/action_dispatch/http/url.rb +201 -125
- data/lib/action_dispatch/journey/formatter.rb +110 -50
- data/lib/action_dispatch/journey/gtg/builder.rb +37 -50
- data/lib/action_dispatch/journey/gtg/simulator.rb +20 -17
- data/lib/action_dispatch/journey/gtg/transition_table.rb +96 -36
- data/lib/action_dispatch/journey/nfa/dot.rb +5 -14
- data/lib/action_dispatch/journey/nodes/node.rb +100 -20
- data/lib/action_dispatch/journey/parser.rb +19 -17
- data/lib/action_dispatch/journey/parser.y +4 -3
- data/lib/action_dispatch/journey/parser_extras.rb +14 -4
- data/lib/action_dispatch/journey/path/pattern.rb +79 -63
- data/lib/action_dispatch/journey/route.rb +108 -44
- data/lib/action_dispatch/journey/router/utils.rb +41 -29
- data/lib/action_dispatch/journey/router.rb +64 -57
- data/lib/action_dispatch/journey/routes.rb +23 -21
- data/lib/action_dispatch/journey/scanner.rb +28 -17
- data/lib/action_dispatch/journey/visitors.rb +100 -54
- data/lib/action_dispatch/journey/visualizer/fsm.js +49 -24
- data/lib/action_dispatch/journey/visualizer/index.html.erb +1 -1
- data/lib/action_dispatch/journey.rb +7 -5
- data/lib/action_dispatch/log_subscriber.rb +25 -0
- data/lib/action_dispatch/middleware/actionable_exceptions.rb +46 -0
- data/lib/action_dispatch/middleware/assume_ssl.rb +27 -0
- data/lib/action_dispatch/middleware/callbacks.rb +7 -6
- data/lib/action_dispatch/middleware/cookies.rb +471 -328
- data/lib/action_dispatch/middleware/debug_exceptions.rb +149 -66
- data/lib/action_dispatch/middleware/debug_locks.rb +129 -0
- data/lib/action_dispatch/middleware/debug_view.rb +73 -0
- data/lib/action_dispatch/middleware/exception_wrapper.rb +275 -73
- data/lib/action_dispatch/middleware/executor.rb +32 -0
- data/lib/action_dispatch/middleware/flash.rb +143 -101
- data/lib/action_dispatch/middleware/host_authorization.rb +171 -0
- data/lib/action_dispatch/middleware/public_exceptions.rb +36 -27
- data/lib/action_dispatch/middleware/reloader.rb +10 -92
- data/lib/action_dispatch/middleware/remote_ip.rb +133 -107
- data/lib/action_dispatch/middleware/request_id.rb +29 -15
- data/lib/action_dispatch/middleware/server_timing.rb +78 -0
- data/lib/action_dispatch/middleware/session/abstract_store.rb +49 -27
- data/lib/action_dispatch/middleware/session/cache_store.rb +33 -16
- data/lib/action_dispatch/middleware/session/cookie_store.rb +86 -80
- data/lib/action_dispatch/middleware/session/mem_cache_store.rb +15 -3
- data/lib/action_dispatch/middleware/show_exceptions.rb +66 -36
- data/lib/action_dispatch/middleware/ssl.rb +134 -36
- data/lib/action_dispatch/middleware/stack.rb +109 -44
- data/lib/action_dispatch/middleware/static.rb +159 -90
- data/lib/action_dispatch/middleware/templates/rescues/_actions.html.erb +13 -0
- data/lib/action_dispatch/middleware/templates/rescues/_actions.text.erb +0 -0
- data/lib/action_dispatch/middleware/templates/rescues/_message_and_suggestions.html.erb +22 -0
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +7 -24
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb +1 -1
- data/lib/action_dispatch/middleware/templates/rescues/_source.html.erb +36 -0
- data/lib/action_dispatch/middleware/templates/rescues/_source.text.erb +8 -0
- data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +46 -36
- data/lib/action_dispatch/middleware/templates/rescues/blocked_host.html.erb +12 -0
- data/lib/action_dispatch/middleware/templates/rescues/blocked_host.text.erb +9 -0
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +26 -7
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.html.erb +24 -0
- data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.text.erb +16 -0
- data/lib/action_dispatch/middleware/templates/rescues/layout.erb +139 -15
- data/lib/action_dispatch/middleware/templates/rescues/missing_exact_template.html.erb +23 -0
- data/lib/action_dispatch/middleware/templates/rescues/missing_exact_template.text.erb +3 -0
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +6 -6
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +7 -7
- data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +9 -9
- data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +1 -1
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +4 -4
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.text.erb +1 -1
- data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +7 -4
- data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +125 -93
- data/lib/action_dispatch/railtie.rb +44 -16
- data/lib/action_dispatch/request/session.rb +159 -69
- data/lib/action_dispatch/request/utils.rb +97 -23
- data/lib/action_dispatch/routing/endpoint.rb +11 -2
- data/lib/action_dispatch/routing/inspector.rb +195 -106
- data/lib/action_dispatch/routing/mapper.rb +1338 -955
- data/lib/action_dispatch/routing/polymorphic_routes.rb +234 -201
- data/lib/action_dispatch/routing/redirection.rb +78 -51
- data/lib/action_dispatch/routing/route_set.rb +460 -374
- data/lib/action_dispatch/routing/routes_proxy.rb +36 -12
- data/lib/action_dispatch/routing/url_for.rb +172 -124
- data/lib/action_dispatch/routing.rb +159 -158
- data/lib/action_dispatch/system_test_case.rb +206 -0
- data/lib/action_dispatch/system_testing/browser.rb +84 -0
- data/lib/action_dispatch/system_testing/driver.rb +85 -0
- data/lib/action_dispatch/system_testing/server.rb +33 -0
- data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +164 -0
- data/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb +23 -0
- data/lib/action_dispatch/testing/assertion_response.rb +48 -0
- data/lib/action_dispatch/testing/assertions/response.rb +71 -39
- data/lib/action_dispatch/testing/assertions/routing.rb +228 -103
- data/lib/action_dispatch/testing/assertions.rb +9 -6
- data/lib/action_dispatch/testing/integration.rb +486 -306
- data/lib/action_dispatch/testing/request_encoder.rb +60 -0
- data/lib/action_dispatch/testing/test_helpers/page_dump_helper.rb +35 -0
- data/lib/action_dispatch/testing/test_process.rb +35 -22
- data/lib/action_dispatch/testing/test_request.rb +29 -34
- data/lib/action_dispatch/testing/test_response.rb +48 -15
- data/lib/action_dispatch.rb +82 -40
- data/lib/action_pack/gem_version.rb +8 -4
- data/lib/action_pack/version.rb +6 -2
- data/lib/action_pack.rb +21 -18
- metadata +146 -56
- data/lib/action_controller/caching/fragments.rb +0 -103
- data/lib/action_controller/metal/force_ssl.rb +0 -97
- data/lib/action_controller/metal/hide_actions.rb +0 -40
- data/lib/action_controller/metal/rack_delegation.rb +0 -32
- data/lib/action_controller/middleware.rb +0 -39
- data/lib/action_controller/model_naming.rb +0 -12
- data/lib/action_dispatch/http/parameter_filter.rb +0 -72
- data/lib/action_dispatch/journey/backwards.rb +0 -5
- data/lib/action_dispatch/journey/nfa/builder.rb +0 -76
- data/lib/action_dispatch/journey/nfa/simulator.rb +0 -47
- data/lib/action_dispatch/journey/nfa/transition_table.rb +0 -163
- data/lib/action_dispatch/journey/router/strexp.rb +0 -27
- data/lib/action_dispatch/middleware/params_parser.rb +0 -60
- data/lib/action_dispatch/middleware/templates/rescues/_source.erb +0 -27
- data/lib/action_dispatch/testing/assertions/dom.rb +0 -3
- data/lib/action_dispatch/testing/assertions/selector.rb +0 -3
- data/lib/action_dispatch/testing/assertions/tag.rb +0 -3
@@ -1,26 +1,180 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :markup: markdown
|
4
|
+
|
1
5
|
module ActionController
|
2
6
|
module Rendering
|
3
7
|
extend ActiveSupport::Concern
|
4
8
|
|
5
|
-
RENDER_FORMATS_IN_PRIORITY = [:body, :
|
9
|
+
RENDER_FORMATS_IN_PRIORITY = [:body, :plain, :html]
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
module ClassMethods
|
12
|
+
# Documentation at ActionController::Renderer#render
|
13
|
+
delegate :render, to: :renderer
|
14
|
+
|
15
|
+
# Returns a renderer instance (inherited from ActionController::Renderer) for
|
16
|
+
# the controller.
|
17
|
+
attr_reader :renderer
|
18
|
+
|
19
|
+
def setup_renderer! # :nodoc:
|
20
|
+
@renderer = Renderer.for(self)
|
21
|
+
end
|
22
|
+
|
23
|
+
def inherited(klass)
|
24
|
+
klass.setup_renderer!
|
25
|
+
super
|
26
|
+
end
|
11
27
|
end
|
12
28
|
|
29
|
+
# Renders a template and assigns the result to `self.response_body`.
|
30
|
+
#
|
31
|
+
# If no rendering mode option is specified, the template will be derived from
|
32
|
+
# the first argument.
|
33
|
+
#
|
34
|
+
# render "posts/show"
|
35
|
+
# # => renders app/views/posts/show.html.erb
|
36
|
+
#
|
37
|
+
# # In a PostsController action...
|
38
|
+
# render :show
|
39
|
+
# # => renders app/views/posts/show.html.erb
|
40
|
+
#
|
41
|
+
# If the first argument responds to `render_in`, the template will be rendered
|
42
|
+
# by calling `render_in` with the current view context.
|
43
|
+
#
|
44
|
+
# class Greeting
|
45
|
+
# def render_in(view_context)
|
46
|
+
# view_context.render html: "<h1>Hello, World</h1>"
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# def format
|
50
|
+
# :html
|
51
|
+
# end
|
52
|
+
# end
|
53
|
+
#
|
54
|
+
# render(Greeting.new)
|
55
|
+
# # => "<h1>Hello, World</h1>"
|
56
|
+
#
|
57
|
+
# render(renderable: Greeting.new)
|
58
|
+
# # => "<h1>Hello, World</h1>"
|
59
|
+
#
|
60
|
+
# #### Rendering Mode
|
61
|
+
#
|
62
|
+
# `:partial`
|
63
|
+
# : See ActionView::PartialRenderer for details.
|
64
|
+
#
|
65
|
+
# render partial: "posts/form", locals: { post: Post.new }
|
66
|
+
# # => renders app/views/posts/_form.html.erb
|
67
|
+
#
|
68
|
+
# `:file`
|
69
|
+
# : Renders the contents of a file. This option should **not** be used with
|
70
|
+
# unsanitized user input.
|
71
|
+
#
|
72
|
+
# render file: "/path/to/some/file"
|
73
|
+
# # => renders /path/to/some/file
|
74
|
+
#
|
75
|
+
# `:inline`
|
76
|
+
# : Renders an ERB template string.
|
77
|
+
#
|
78
|
+
# @name = "World"
|
79
|
+
# render inline: "<h1>Hello, <%= @name %>!</h1>"
|
80
|
+
# # => renders "<h1>Hello, World!</h1>"
|
81
|
+
#
|
82
|
+
# `:body`
|
83
|
+
# : Renders the provided text, and sets the content type as `text/plain`.
|
84
|
+
#
|
85
|
+
# render body: "Hello, World!"
|
86
|
+
# # => renders "Hello, World!"
|
87
|
+
#
|
88
|
+
# `:plain`
|
89
|
+
# : Renders the provided text, and sets the content type as `text/plain`.
|
90
|
+
#
|
91
|
+
# render plain: "Hello, World!"
|
92
|
+
# # => renders "Hello, World!"
|
93
|
+
#
|
94
|
+
# `:html`
|
95
|
+
# : Renders the provided HTML string, and sets the content type as
|
96
|
+
# `text/html`. If the string is not `html_safe?`, performs HTML escaping on
|
97
|
+
# the string before rendering.
|
98
|
+
#
|
99
|
+
# render html: "<h1>Hello, World!</h1>".html_safe
|
100
|
+
# # => renders "<h1>Hello, World!</h1>"
|
101
|
+
#
|
102
|
+
# render html: "<h1>Hello, World!</h1>"
|
103
|
+
# # => renders "<h1>Hello, World!</h1>"
|
104
|
+
#
|
105
|
+
# `:json`
|
106
|
+
# : Renders the provided object as JSON, and sets the content type as
|
107
|
+
# `application/json`. If the object is not a string, it will be converted to
|
108
|
+
# JSON by calling `to_json`.
|
109
|
+
#
|
110
|
+
# render json: { hello: "world" }
|
111
|
+
# # => renders "{\"hello\":\"world\"}"
|
112
|
+
#
|
113
|
+
# `:renderable`
|
114
|
+
# : Renders the provided object by calling `render_in` with the current view
|
115
|
+
# context. The response format is determined by calling `format` on the
|
116
|
+
# renderable if it responds to `format`, falling back to `text/html` by
|
117
|
+
# default.
|
118
|
+
#
|
119
|
+
# render renderable: Greeting.new
|
120
|
+
# # => renders "<h1>Hello, World</h1>"
|
121
|
+
#
|
122
|
+
#
|
123
|
+
# By default, when a rendering mode is specified, no layout template is
|
124
|
+
# rendered.
|
125
|
+
#
|
126
|
+
# #### Options
|
127
|
+
#
|
128
|
+
# `:assigns`
|
129
|
+
# : Hash of instance variable assignments for the template.
|
130
|
+
#
|
131
|
+
# render inline: "<h1>Hello, <%= @name %>!</h1>", assigns: { name: "World" }
|
132
|
+
# # => renders "<h1>Hello, World!</h1>"
|
133
|
+
#
|
134
|
+
# `:locals`
|
135
|
+
# : Hash of local variable assignments for the template.
|
136
|
+
#
|
137
|
+
# render inline: "<h1>Hello, <%= name %>!</h1>", locals: { name: "World" }
|
138
|
+
# # => renders "<h1>Hello, World!</h1>"
|
139
|
+
#
|
140
|
+
# `:layout`
|
141
|
+
# : The layout template to render. Can also be `false` or `true` to disable or
|
142
|
+
# (re)enable the default layout template.
|
143
|
+
#
|
144
|
+
# render "posts/show", layout: "holiday"
|
145
|
+
# # => renders app/views/posts/show.html.erb with the app/views/layouts/holiday.html.erb layout
|
146
|
+
#
|
147
|
+
# render "posts/show", layout: false
|
148
|
+
# # => renders app/views/posts/show.html.erb with no layout
|
149
|
+
#
|
150
|
+
# render inline: "<h1>Hello, World!</h1>", layout: true
|
151
|
+
# # => renders "<h1>Hello, World!</h1>" with the default layout
|
152
|
+
#
|
153
|
+
# `:status`
|
154
|
+
# : The HTTP status code to send with the response. Can be specified as a
|
155
|
+
# number or as the status name in Symbol form. Defaults to 200.
|
156
|
+
#
|
157
|
+
# render "posts/new", status: 422
|
158
|
+
# # => renders app/views/posts/new.html.erb with HTTP status code 422
|
159
|
+
#
|
160
|
+
# render "posts/new", status: :unprocessable_entity
|
161
|
+
# # => renders app/views/posts/new.html.erb with HTTP status code 422
|
162
|
+
#
|
163
|
+
#--
|
13
164
|
# Check for double render errors and set the content_type after rendering.
|
14
|
-
def render(*args)
|
15
|
-
raise ::AbstractController::DoubleRenderError if
|
165
|
+
def render(*args)
|
166
|
+
raise ::AbstractController::DoubleRenderError if response_body
|
16
167
|
super
|
17
168
|
end
|
18
169
|
|
19
|
-
#
|
170
|
+
# Similar to #render, but only returns the rendered template as a string,
|
171
|
+
# instead of setting `self.response_body`.
|
172
|
+
#--
|
173
|
+
# Override render_to_string because body can now be set to a Rack body.
|
20
174
|
def render_to_string(*)
|
21
175
|
result = super
|
22
176
|
if result.respond_to?(:each)
|
23
|
-
string = ""
|
177
|
+
string = +""
|
24
178
|
result.each { |r| string << r }
|
25
179
|
string
|
26
180
|
else
|
@@ -28,73 +182,79 @@ module ActionController
|
|
28
182
|
end
|
29
183
|
end
|
30
184
|
|
31
|
-
def render_to_body(options = {})
|
32
|
-
super || _render_in_priorities(options) ||
|
185
|
+
def render_to_body(options = {}) # :nodoc:
|
186
|
+
super || _render_in_priorities(options) || " "
|
33
187
|
end
|
34
188
|
|
35
189
|
private
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
190
|
+
# Before processing, set the request formats in current controller formats.
|
191
|
+
def process_action(*) # :nodoc:
|
192
|
+
self.formats = request.formats.filter_map(&:ref)
|
193
|
+
super
|
40
194
|
end
|
41
195
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
super
|
47
|
-
|
48
|
-
if options[:plain]
|
49
|
-
self.content_type = Mime::TEXT
|
50
|
-
else
|
51
|
-
self.content_type ||= format.to_s
|
196
|
+
def _process_variant(options)
|
197
|
+
if defined?(request) && !request.nil? && request.variant.present?
|
198
|
+
options[:variant] = request.variant
|
199
|
+
end
|
52
200
|
end
|
53
|
-
end
|
54
201
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
options
|
60
|
-
end
|
202
|
+
def _render_in_priorities(options)
|
203
|
+
RENDER_FORMATS_IN_PRIORITY.each do |format|
|
204
|
+
return options[format] if options.key?(format)
|
205
|
+
end
|
61
206
|
|
62
|
-
|
63
|
-
|
64
|
-
_normalize_text(options)
|
207
|
+
nil
|
208
|
+
end
|
65
209
|
|
66
|
-
|
67
|
-
|
210
|
+
def _set_html_content_type
|
211
|
+
self.content_type = Mime[:html].to_s
|
68
212
|
end
|
69
213
|
|
70
|
-
|
71
|
-
|
214
|
+
def _set_rendered_content_type(format)
|
215
|
+
if format && !response.media_type
|
216
|
+
self.content_type = format.to_s
|
217
|
+
end
|
72
218
|
end
|
73
219
|
|
74
|
-
|
75
|
-
|
220
|
+
def _set_vary_header
|
221
|
+
if response.headers["Vary"].blank? && request.should_apply_vary_header?
|
222
|
+
response.headers["Vary"] = "Accept"
|
223
|
+
end
|
76
224
|
end
|
77
225
|
|
78
|
-
|
79
|
-
|
226
|
+
# Normalize both text and status options.
|
227
|
+
def _normalize_options(options)
|
228
|
+
_normalize_text(options)
|
229
|
+
|
230
|
+
if options[:html]
|
231
|
+
options[:html] = ERB::Util.html_escape(options[:html])
|
232
|
+
end
|
80
233
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
234
|
+
if options[:status]
|
235
|
+
options[:status] = Rack::Utils.status_code(options[:status])
|
236
|
+
end
|
237
|
+
|
238
|
+
super
|
239
|
+
end
|
240
|
+
|
241
|
+
def _normalize_text(options)
|
242
|
+
RENDER_FORMATS_IN_PRIORITY.each do |format|
|
243
|
+
if options.key?(format) && options[format].respond_to?(:to_text)
|
244
|
+
options[format] = options[format].to_text
|
245
|
+
end
|
85
246
|
end
|
86
247
|
end
|
87
|
-
end
|
88
248
|
|
89
|
-
|
90
|
-
|
91
|
-
|
249
|
+
# Process controller specific options, as status, content-type and location.
|
250
|
+
def _process_options(options)
|
251
|
+
status, content_type, location = options.values_at(:status, :content_type, :location)
|
92
252
|
|
93
|
-
|
94
|
-
|
95
|
-
|
253
|
+
self.status = status if status
|
254
|
+
self.content_type = content_type if content_type
|
255
|
+
headers["Location"] = url_for(location) if location
|
96
256
|
|
97
|
-
|
98
|
-
|
257
|
+
super
|
258
|
+
end
|
99
259
|
end
|
100
260
|
end
|