actionpack 3.2.19 → 4.2.11.3
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 +7 -0
- data/CHANGELOG.md +412 -503
- data/MIT-LICENSE +1 -1
- data/README.rdoc +11 -294
- data/lib/abstract_controller/asset_paths.rb +2 -2
- data/lib/abstract_controller/base.rb +52 -18
- data/lib/abstract_controller/callbacks.rb +87 -89
- data/lib/abstract_controller/collector.rb +17 -3
- data/lib/abstract_controller/helpers.rb +41 -14
- data/lib/abstract_controller/logger.rb +1 -2
- data/lib/abstract_controller/railties/routes_helpers.rb +3 -3
- data/lib/abstract_controller/rendering.rb +65 -118
- data/lib/abstract_controller/translation.rb +16 -1
- data/lib/abstract_controller/url_for.rb +7 -7
- data/lib/abstract_controller.rb +2 -10
- data/lib/action_controller/base.rb +61 -28
- data/lib/action_controller/caching/fragments.rb +30 -54
- data/lib/action_controller/caching.rb +38 -35
- data/lib/action_controller/log_subscriber.rb +35 -18
- data/lib/action_controller/metal/conditional_get.rb +103 -34
- data/lib/action_controller/metal/data_streaming.rb +20 -26
- data/lib/action_controller/metal/etag_with_template_digest.rb +50 -0
- data/lib/action_controller/metal/exceptions.rb +19 -6
- data/lib/action_controller/metal/flash.rb +41 -9
- data/lib/action_controller/metal/force_ssl.rb +70 -12
- data/lib/action_controller/metal/head.rb +30 -7
- data/lib/action_controller/metal/helpers.rb +11 -11
- data/lib/action_controller/metal/hide_actions.rb +0 -1
- data/lib/action_controller/metal/http_authentication.rb +140 -94
- data/lib/action_controller/metal/implicit_render.rb +1 -1
- data/lib/action_controller/metal/instrumentation.rb +11 -7
- data/lib/action_controller/metal/live.rb +328 -0
- data/lib/action_controller/metal/mime_responds.rb +161 -152
- data/lib/action_controller/metal/params_wrapper.rb +126 -81
- data/lib/action_controller/metal/rack_delegation.rb +10 -4
- data/lib/action_controller/metal/redirecting.rb +44 -41
- data/lib/action_controller/metal/renderers.rb +48 -19
- data/lib/action_controller/metal/rendering.rb +46 -11
- data/lib/action_controller/metal/request_forgery_protection.rb +250 -29
- data/lib/action_controller/metal/streaming.rb +30 -38
- data/lib/action_controller/metal/strong_parameters.rb +669 -0
- data/lib/action_controller/metal/testing.rb +12 -18
- data/lib/action_controller/metal/url_for.rb +31 -29
- data/lib/action_controller/metal.rb +31 -40
- data/lib/action_controller/model_naming.rb +12 -0
- data/lib/action_controller/railtie.rb +38 -18
- data/lib/action_controller/railties/helpers.rb +22 -0
- data/lib/action_controller/test_case.rb +359 -173
- data/lib/action_controller.rb +9 -16
- data/lib/action_dispatch/http/cache.rb +64 -11
- data/lib/action_dispatch/http/filter_parameters.rb +20 -10
- data/lib/action_dispatch/http/filter_redirect.rb +38 -0
- data/lib/action_dispatch/http/headers.rb +85 -17
- data/lib/action_dispatch/http/mime_negotiation.rb +55 -5
- data/lib/action_dispatch/http/mime_type.rb +167 -114
- data/lib/action_dispatch/http/mime_types.rb +2 -1
- data/lib/action_dispatch/http/parameter_filter.rb +44 -46
- data/lib/action_dispatch/http/parameters.rb +30 -46
- data/lib/action_dispatch/http/rack_cache.rb +2 -3
- data/lib/action_dispatch/http/request.rb +108 -45
- data/lib/action_dispatch/http/response.rb +247 -48
- data/lib/action_dispatch/http/upload.rb +60 -29
- data/lib/action_dispatch/http/url.rb +135 -45
- data/lib/action_dispatch/journey/backwards.rb +5 -0
- data/lib/action_dispatch/journey/formatter.rb +166 -0
- data/lib/action_dispatch/journey/gtg/builder.rb +162 -0
- data/lib/action_dispatch/journey/gtg/simulator.rb +47 -0
- data/lib/action_dispatch/journey/gtg/transition_table.rb +157 -0
- data/lib/action_dispatch/journey/nfa/builder.rb +76 -0
- data/lib/action_dispatch/journey/nfa/dot.rb +36 -0
- data/lib/action_dispatch/journey/nfa/simulator.rb +47 -0
- data/lib/action_dispatch/journey/nfa/transition_table.rb +163 -0
- data/lib/action_dispatch/journey/nodes/node.rb +128 -0
- data/lib/action_dispatch/journey/parser.rb +198 -0
- data/lib/action_dispatch/journey/parser.y +49 -0
- data/lib/action_dispatch/journey/parser_extras.rb +23 -0
- data/lib/action_dispatch/journey/path/pattern.rb +193 -0
- data/lib/action_dispatch/journey/route.rb +125 -0
- data/lib/action_dispatch/journey/router/strexp.rb +27 -0
- data/lib/action_dispatch/journey/router/utils.rb +93 -0
- data/lib/action_dispatch/journey/router.rb +144 -0
- data/lib/action_dispatch/journey/routes.rb +80 -0
- data/lib/action_dispatch/journey/scanner.rb +61 -0
- data/lib/action_dispatch/journey/visitors.rb +221 -0
- data/lib/action_dispatch/journey/visualizer/fsm.css +30 -0
- data/lib/action_dispatch/journey/visualizer/fsm.js +134 -0
- data/lib/action_dispatch/journey/visualizer/index.html.erb +52 -0
- data/lib/action_dispatch/journey.rb +5 -0
- data/lib/action_dispatch/middleware/callbacks.rb +16 -11
- data/lib/action_dispatch/middleware/cookies.rb +346 -125
- data/lib/action_dispatch/middleware/debug_exceptions.rb +52 -24
- data/lib/action_dispatch/middleware/exception_wrapper.rb +75 -9
- data/lib/action_dispatch/middleware/flash.rb +85 -72
- data/lib/action_dispatch/middleware/params_parser.rb +16 -31
- data/lib/action_dispatch/middleware/public_exceptions.rb +39 -14
- data/lib/action_dispatch/middleware/reloader.rb +16 -7
- data/lib/action_dispatch/middleware/remote_ip.rb +132 -40
- data/lib/action_dispatch/middleware/request_id.rb +3 -7
- data/lib/action_dispatch/middleware/session/abstract_store.rb +22 -20
- data/lib/action_dispatch/middleware/session/cache_store.rb +3 -3
- data/lib/action_dispatch/middleware/session/cookie_store.rb +84 -29
- data/lib/action_dispatch/middleware/session/mem_cache_store.rb +8 -3
- data/lib/action_dispatch/middleware/show_exceptions.rb +15 -44
- data/lib/action_dispatch/middleware/ssl.rb +72 -0
- data/lib/action_dispatch/middleware/stack.rb +6 -1
- data/lib/action_dispatch/middleware/static.rb +80 -23
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +34 -0
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb +23 -0
- data/lib/action_dispatch/middleware/templates/rescues/_source.erb +27 -0
- data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +52 -0
- data/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +9 -0
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +16 -0
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
- data/lib/action_dispatch/middleware/templates/rescues/layout.erb +133 -5
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +11 -0
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.text.erb +3 -0
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +32 -0
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.text.erb +11 -0
- data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +20 -0
- data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +7 -0
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +6 -0
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.text.erb +3 -0
- data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +16 -0
- data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +200 -0
- data/lib/action_dispatch/railtie.rb +19 -6
- data/lib/action_dispatch/request/session.rb +193 -0
- data/lib/action_dispatch/request/utils.rb +35 -0
- data/lib/action_dispatch/routing/endpoint.rb +10 -0
- data/lib/action_dispatch/routing/inspector.rb +234 -0
- data/lib/action_dispatch/routing/mapper.rb +897 -436
- data/lib/action_dispatch/routing/polymorphic_routes.rb +213 -92
- data/lib/action_dispatch/routing/redirection.rb +97 -37
- data/lib/action_dispatch/routing/route_set.rb +432 -239
- data/lib/action_dispatch/routing/routes_proxy.rb +7 -4
- data/lib/action_dispatch/routing/url_for.rb +63 -34
- data/lib/action_dispatch/routing.rb +57 -89
- data/lib/action_dispatch/testing/assertions/dom.rb +2 -36
- data/lib/action_dispatch/testing/assertions/response.rb +24 -38
- data/lib/action_dispatch/testing/assertions/routing.rb +55 -54
- data/lib/action_dispatch/testing/assertions/selector.rb +2 -434
- data/lib/action_dispatch/testing/assertions/tag.rb +2 -137
- data/lib/action_dispatch/testing/assertions.rb +11 -7
- data/lib/action_dispatch/testing/integration.rb +88 -72
- data/lib/action_dispatch/testing/test_process.rb +9 -6
- data/lib/action_dispatch/testing/test_request.rb +13 -9
- data/lib/action_dispatch/testing/test_response.rb +1 -5
- data/lib/action_dispatch.rb +24 -21
- data/lib/action_pack/gem_version.rb +15 -0
- data/lib/action_pack/version.rb +5 -7
- data/lib/action_pack.rb +1 -1
- metadata +181 -292
- data/lib/abstract_controller/layouts.rb +0 -423
- data/lib/abstract_controller/view_paths.rb +0 -96
- data/lib/action_controller/caching/actions.rb +0 -185
- data/lib/action_controller/caching/pages.rb +0 -187
- data/lib/action_controller/caching/sweeping.rb +0 -97
- data/lib/action_controller/deprecated/integration_test.rb +0 -2
- data/lib/action_controller/deprecated/performance_test.rb +0 -1
- data/lib/action_controller/deprecated.rb +0 -3
- data/lib/action_controller/metal/compatibility.rb +0 -65
- data/lib/action_controller/metal/responder.rb +0 -286
- data/lib/action_controller/metal/session_management.rb +0 -14
- data/lib/action_controller/railties/paths.rb +0 -25
- data/lib/action_controller/record_identifier.rb +0 -85
- data/lib/action_controller/vendor/html-scanner/html/document.rb +0 -68
- data/lib/action_controller/vendor/html-scanner/html/node.rb +0 -532
- data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +0 -177
- data/lib/action_controller/vendor/html-scanner/html/selector.rb +0 -830
- data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +0 -107
- data/lib/action_controller/vendor/html-scanner/html/version.rb +0 -11
- data/lib/action_controller/vendor/html-scanner.rb +0 -20
- data/lib/action_dispatch/middleware/best_standards_support.rb +0 -30
- data/lib/action_dispatch/middleware/body_proxy.rb +0 -30
- data/lib/action_dispatch/middleware/head.rb +0 -18
- data/lib/action_dispatch/middleware/rescue.rb +0 -26
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb +0 -31
- data/lib/action_dispatch/middleware/templates/rescues/_trace.erb +0 -26
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +0 -10
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.erb +0 -2
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.erb +0 -15
- data/lib/action_dispatch/middleware/templates/rescues/template_error.erb +0 -17
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.erb +0 -2
- data/lib/action_dispatch/testing/performance_test.rb +0 -10
- data/lib/action_view/asset_paths.rb +0 -142
- data/lib/action_view/base.rb +0 -220
- data/lib/action_view/buffers.rb +0 -43
- data/lib/action_view/context.rb +0 -36
- data/lib/action_view/flows.rb +0 -79
- data/lib/action_view/helpers/active_model_helper.rb +0 -50
- data/lib/action_view/helpers/asset_paths.rb +0 -7
- data/lib/action_view/helpers/asset_tag_helper.rb +0 -457
- data/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb +0 -146
- data/lib/action_view/helpers/asset_tag_helpers/asset_paths.rb +0 -93
- data/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb +0 -193
- data/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb +0 -148
- data/lib/action_view/helpers/atom_feed_helper.rb +0 -200
- data/lib/action_view/helpers/cache_helper.rb +0 -64
- data/lib/action_view/helpers/capture_helper.rb +0 -203
- data/lib/action_view/helpers/controller_helper.rb +0 -25
- data/lib/action_view/helpers/csrf_helper.rb +0 -32
- data/lib/action_view/helpers/date_helper.rb +0 -1062
- data/lib/action_view/helpers/debug_helper.rb +0 -40
- data/lib/action_view/helpers/form_helper.rb +0 -1486
- data/lib/action_view/helpers/form_options_helper.rb +0 -658
- data/lib/action_view/helpers/form_tag_helper.rb +0 -685
- data/lib/action_view/helpers/javascript_helper.rb +0 -110
- data/lib/action_view/helpers/number_helper.rb +0 -622
- data/lib/action_view/helpers/output_safety_helper.rb +0 -38
- data/lib/action_view/helpers/record_tag_helper.rb +0 -111
- data/lib/action_view/helpers/rendering_helper.rb +0 -90
- data/lib/action_view/helpers/sanitize_helper.rb +0 -259
- data/lib/action_view/helpers/tag_helper.rb +0 -160
- data/lib/action_view/helpers/text_helper.rb +0 -426
- data/lib/action_view/helpers/translation_helper.rb +0 -91
- data/lib/action_view/helpers/url_helper.rb +0 -693
- data/lib/action_view/helpers.rb +0 -60
- data/lib/action_view/locale/en.yml +0 -160
- data/lib/action_view/log_subscriber.rb +0 -28
- data/lib/action_view/lookup_context.rb +0 -254
- data/lib/action_view/path_set.rb +0 -89
- data/lib/action_view/railtie.rb +0 -55
- data/lib/action_view/renderer/abstract_renderer.rb +0 -41
- data/lib/action_view/renderer/partial_renderer.rb +0 -415
- data/lib/action_view/renderer/renderer.rb +0 -54
- data/lib/action_view/renderer/streaming_template_renderer.rb +0 -106
- data/lib/action_view/renderer/template_renderer.rb +0 -94
- data/lib/action_view/template/error.rb +0 -128
- data/lib/action_view/template/handlers/builder.rb +0 -26
- data/lib/action_view/template/handlers/erb.rb +0 -125
- data/lib/action_view/template/handlers.rb +0 -50
- data/lib/action_view/template/resolver.rb +0 -272
- data/lib/action_view/template/text.rb +0 -30
- data/lib/action_view/template.rb +0 -337
- data/lib/action_view/test_case.rb +0 -245
- data/lib/action_view/testing/resolvers.rb +0 -50
- data/lib/action_view.rb +0 -84
- data/lib/sprockets/assets.rake +0 -99
- data/lib/sprockets/bootstrap.rb +0 -37
- data/lib/sprockets/compressors.rb +0 -83
- data/lib/sprockets/helpers/isolated_helper.rb +0 -13
- data/lib/sprockets/helpers/rails_helper.rb +0 -182
- data/lib/sprockets/helpers.rb +0 -6
- data/lib/sprockets/railtie.rb +0 -62
- data/lib/sprockets/static_compiler.rb +0 -56
@@ -1,47 +1,49 @@
|
|
1
|
-
# Includes +url_for+ into the host class. The class has to provide a +RouteSet+ by implementing
|
2
|
-
# the <tt>_routes</tt> method. Otherwise, an exception will be raised.
|
3
|
-
#
|
4
|
-
# In addition to <tt>AbstractController::UrlFor</tt>, this module accesses the HTTP layer to define
|
5
|
-
# url options like the +host+. In order to do so, this module requires the host class
|
6
|
-
# to implement +env+ and +request+, which need to be a Rack-compatible.
|
7
|
-
#
|
8
|
-
# Example:
|
9
|
-
#
|
10
|
-
# class RootUrl
|
11
|
-
# include ActionController::UrlFor
|
12
|
-
# include Rails.application.routes.url_helpers
|
13
|
-
#
|
14
|
-
# delegate :env, :request, :to => :controller
|
15
|
-
#
|
16
|
-
# def initialize(controller)
|
17
|
-
# @controller = controller
|
18
|
-
# @url = root_path # named route from the application.
|
19
|
-
# end
|
20
|
-
# end
|
21
|
-
#
|
22
1
|
module ActionController
|
2
|
+
# Includes +url_for+ into the host class. The class has to provide a +RouteSet+ by implementing
|
3
|
+
# the <tt>_routes</tt> method. Otherwise, an exception will be raised.
|
4
|
+
#
|
5
|
+
# In addition to <tt>AbstractController::UrlFor</tt>, this module accesses the HTTP layer to define
|
6
|
+
# url options like the +host+. In order to do so, this module requires the host class
|
7
|
+
# to implement +env+ and +request+, which need to be a Rack-compatible.
|
8
|
+
#
|
9
|
+
# class RootUrl
|
10
|
+
# include ActionController::UrlFor
|
11
|
+
# include Rails.application.routes.url_helpers
|
12
|
+
#
|
13
|
+
# delegate :env, :request, to: :controller
|
14
|
+
#
|
15
|
+
# def initialize(controller)
|
16
|
+
# @controller = controller
|
17
|
+
# @url = root_path # named route from the application.
|
18
|
+
# end
|
19
|
+
# end
|
23
20
|
module UrlFor
|
24
21
|
extend ActiveSupport::Concern
|
25
22
|
|
26
23
|
include AbstractController::UrlFor
|
27
24
|
|
28
25
|
def url_options
|
29
|
-
@_url_options ||=
|
26
|
+
@_url_options ||= {
|
30
27
|
:host => request.host,
|
31
28
|
:port => request.optional_port,
|
32
29
|
:protocol => request.protocol,
|
33
|
-
:
|
34
|
-
).freeze
|
30
|
+
:_recall => request.path_parameters
|
31
|
+
}.merge!(super).freeze
|
35
32
|
|
36
|
-
if _routes.equal?(env["action_dispatch.routes"])
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
if (same_origin = _routes.equal?(env["action_dispatch.routes".freeze])) ||
|
34
|
+
(script_name = env["ROUTES_#{_routes.object_id}_SCRIPT_NAME"]) ||
|
35
|
+
(original_script_name = env['ORIGINAL_SCRIPT_NAME'.freeze])
|
36
|
+
|
37
|
+
options = @_url_options.dup
|
38
|
+
if original_script_name
|
39
|
+
options[:original_script_name] = original_script_name
|
40
|
+
else
|
41
|
+
options[:script_name] = same_origin ? request.script_name.dup : script_name
|
40
42
|
end
|
43
|
+
options.freeze
|
41
44
|
else
|
42
45
|
@_url_options
|
43
46
|
end
|
44
47
|
end
|
45
|
-
|
46
48
|
end
|
47
49
|
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
require 'active_support/core_ext/
|
2
|
-
require 'active_support/core_ext/object/blank'
|
1
|
+
require 'active_support/core_ext/array/extract_options'
|
3
2
|
require 'action_dispatch/middleware/stack'
|
4
3
|
|
5
4
|
module ActionController
|
@@ -7,7 +6,7 @@ module ActionController
|
|
7
6
|
# allowing the following syntax in controllers:
|
8
7
|
#
|
9
8
|
# class PostsController < ApplicationController
|
10
|
-
# use AuthenticationMiddleware, :
|
9
|
+
# use AuthenticationMiddleware, except: [:index, :show]
|
11
10
|
# end
|
12
11
|
#
|
13
12
|
class MiddlewareStack < ActionDispatch::MiddlewareStack #:nodoc:
|
@@ -31,14 +30,11 @@ module ActionController
|
|
31
30
|
end
|
32
31
|
end
|
33
32
|
|
34
|
-
def build(action, app=
|
35
|
-
app ||= block
|
33
|
+
def build(action, app = Proc.new)
|
36
34
|
action = action.to_s
|
37
|
-
raise "MiddlewareStack#build requires an app" unless app
|
38
35
|
|
39
36
|
middlewares.reverse.inject(app) do |a, middleware|
|
40
|
-
middleware.valid?(action) ?
|
41
|
-
middleware.build(a) : a
|
37
|
+
middleware.valid?(action) ? middleware.build(a) : a
|
42
38
|
end
|
43
39
|
end
|
44
40
|
end
|
@@ -58,7 +54,7 @@ module ActionController
|
|
58
54
|
# And then to route requests to your metal controller, you would add
|
59
55
|
# something like this to <tt>config/routes.rb</tt>:
|
60
56
|
#
|
61
|
-
#
|
57
|
+
# get 'hello', to: HelloController.action(:index)
|
62
58
|
#
|
63
59
|
# The +action+ method returns a valid Rack application for the \Rails
|
64
60
|
# router to dispatch to.
|
@@ -72,7 +68,8 @@ module ActionController
|
|
72
68
|
# can do the following:
|
73
69
|
#
|
74
70
|
# class HelloController < ActionController::Metal
|
75
|
-
# include
|
71
|
+
# include AbstractController::Rendering
|
72
|
+
# include ActionView::Layouts
|
76
73
|
# append_view_path "#{Rails.root}/app/views"
|
77
74
|
#
|
78
75
|
# def index
|
@@ -114,7 +111,7 @@ module ActionController
|
|
114
111
|
# ==== Returns
|
115
112
|
# * <tt>string</tt>
|
116
113
|
def self.controller_name
|
117
|
-
@controller_name ||=
|
114
|
+
@controller_name ||= name.demodulize.sub(/Controller$/, '').underscore
|
118
115
|
end
|
119
116
|
|
120
117
|
# Delegates to the class' <tt>controller_name</tt>
|
@@ -168,7 +165,7 @@ module ActionController
|
|
168
165
|
headers["Location"] = url
|
169
166
|
end
|
170
167
|
|
171
|
-
#
|
168
|
+
# Basic url_for that can be overridden for more robust functionality
|
172
169
|
def url_for(string)
|
173
170
|
string
|
174
171
|
end
|
@@ -176,24 +173,20 @@ module ActionController
|
|
176
173
|
def status
|
177
174
|
@_status
|
178
175
|
end
|
176
|
+
alias :response_code :status # :nodoc:
|
179
177
|
|
180
178
|
def status=(status)
|
181
179
|
@_status = Rack::Utils.status_code(status)
|
182
180
|
end
|
183
181
|
|
184
|
-
def response_body=(
|
185
|
-
body =
|
186
|
-
|
187
|
-
elsif val.nil? || val.respond_to?(:each)
|
188
|
-
val
|
189
|
-
else
|
190
|
-
[val]
|
191
|
-
end
|
192
|
-
super body
|
182
|
+
def response_body=(body)
|
183
|
+
body = [body] unless body.nil? || body.respond_to?(:each)
|
184
|
+
super
|
193
185
|
end
|
194
186
|
|
187
|
+
# Tests if render or redirect has already happened.
|
195
188
|
def performed?
|
196
|
-
response_body
|
189
|
+
response_body || (response && response.committed?)
|
197
190
|
end
|
198
191
|
|
199
192
|
def dispatch(name, request) #:nodoc:
|
@@ -211,39 +204,37 @@ module ActionController
|
|
211
204
|
class_attribute :middleware_stack
|
212
205
|
self.middleware_stack = ActionController::MiddlewareStack.new
|
213
206
|
|
214
|
-
def self.inherited(base) #nodoc:
|
215
|
-
base.middleware_stack =
|
207
|
+
def self.inherited(base) # :nodoc:
|
208
|
+
base.middleware_stack = middleware_stack.dup
|
216
209
|
super
|
217
210
|
end
|
218
211
|
|
219
|
-
#
|
212
|
+
# Pushes the given Rack middleware and its arguments to the bottom of the
|
213
|
+
# middleware stack.
|
220
214
|
def self.use(*args, &block)
|
221
215
|
middleware_stack.use(*args, &block)
|
222
216
|
end
|
223
217
|
|
224
|
-
# Alias for middleware_stack
|
218
|
+
# Alias for +middleware_stack+.
|
225
219
|
def self.middleware
|
226
220
|
middleware_stack
|
227
221
|
end
|
228
222
|
|
229
|
-
# Makes the controller a
|
230
|
-
#
|
223
|
+
# Makes the controller a Rack endpoint that runs the action in the given
|
224
|
+
# +env+'s +action_dispatch.request.path_parameters+ key.
|
231
225
|
def self.call(env)
|
232
|
-
|
226
|
+
req = ActionDispatch::Request.new env
|
227
|
+
action(req.path_parameters[:action]).call(env)
|
233
228
|
end
|
234
229
|
|
235
|
-
#
|
236
|
-
# multiple calls into MyController.action will return the same object
|
237
|
-
# for the same action.
|
238
|
-
#
|
239
|
-
# ==== Parameters
|
240
|
-
# * <tt>action</tt> - An action name
|
241
|
-
#
|
242
|
-
# ==== Returns
|
243
|
-
# * <tt>proc</tt> - A rack application
|
230
|
+
# Returns a Rack endpoint for the given action name.
|
244
231
|
def self.action(name, klass = ActionDispatch::Request)
|
245
|
-
middleware_stack.
|
246
|
-
|
232
|
+
if middleware_stack.any?
|
233
|
+
middleware_stack.build(name) do |env|
|
234
|
+
new.dispatch(name, klass.new(env))
|
235
|
+
end
|
236
|
+
else
|
237
|
+
lambda { |env| new.dispatch(name, klass.new(env)) }
|
247
238
|
end
|
248
239
|
end
|
249
240
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module ActionController
|
2
|
+
module ModelNaming
|
3
|
+
# Converts the given object to an ActiveModel compliant one.
|
4
|
+
def convert_to_model(object)
|
5
|
+
object.respond_to?(:to_model) ? object.to_model : object
|
6
|
+
end
|
7
|
+
|
8
|
+
def model_name_from_record_or_class(record_or_class)
|
9
|
+
convert_to_model(record_or_class).model_name
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,44 +1,64 @@
|
|
1
1
|
require "rails"
|
2
2
|
require "action_controller"
|
3
3
|
require "action_dispatch/railtie"
|
4
|
-
require "action_view/railtie"
|
5
4
|
require "abstract_controller/railties/routes_helpers"
|
6
|
-
require "action_controller/railties/
|
5
|
+
require "action_controller/railties/helpers"
|
6
|
+
require "action_view/railtie"
|
7
7
|
|
8
8
|
module ActionController
|
9
|
-
class Railtie < Rails::Railtie
|
9
|
+
class Railtie < Rails::Railtie #:nodoc:
|
10
10
|
config.action_controller = ActiveSupport::OrderedOptions.new
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
config.eager_load_namespaces << ActionController
|
13
|
+
|
14
|
+
initializer "action_controller.assets_config", :group => :all do |app|
|
15
|
+
app.config.action_controller.assets_dir ||= app.config.paths["public"].first
|
14
16
|
end
|
15
17
|
|
16
|
-
initializer "action_controller.
|
17
|
-
|
18
|
+
initializer "action_controller.set_helpers_path" do |app|
|
19
|
+
ActionController::Helpers.helpers_path = app.helpers_paths
|
18
20
|
end
|
19
21
|
|
20
|
-
initializer "action_controller.
|
21
|
-
|
22
|
+
initializer "action_controller.parameters_config" do |app|
|
23
|
+
options = app.config.action_controller
|
24
|
+
|
25
|
+
ActionController::Parameters.permit_all_parameters = options.delete(:permit_all_parameters) { false }
|
26
|
+
if app.config.action_controller[:always_permitted_parameters]
|
27
|
+
ActionController::Parameters.always_permitted_parameters =
|
28
|
+
app.config.action_controller.delete(:always_permitted_parameters)
|
29
|
+
end
|
30
|
+
ActionController::Parameters.action_on_unpermitted_parameters = options.delete(:action_on_unpermitted_parameters) do
|
31
|
+
(Rails.env.test? || Rails.env.development?) ? :log : false
|
32
|
+
end
|
22
33
|
end
|
23
34
|
|
24
35
|
initializer "action_controller.set_configs" do |app|
|
25
36
|
paths = app.config.paths
|
26
37
|
options = app.config.action_controller
|
27
38
|
|
28
|
-
options.
|
29
|
-
options.
|
30
|
-
|
39
|
+
options.logger ||= Rails.logger
|
40
|
+
options.cache_store ||= Rails.cache
|
41
|
+
|
42
|
+
options.javascripts_dir ||= paths["public/javascripts"].first
|
43
|
+
options.stylesheets_dir ||= paths["public/stylesheets"].first
|
31
44
|
|
32
|
-
#
|
33
|
-
options.
|
34
|
-
options.
|
35
|
-
options.relative_url_root ||= app.config.relative_url_root
|
45
|
+
# Ensure readers methods get compiled
|
46
|
+
options.asset_host ||= app.config.asset_host
|
47
|
+
options.relative_url_root ||= app.config.relative_url_root
|
36
48
|
|
37
49
|
ActiveSupport.on_load(:action_controller) do
|
38
50
|
include app.routes.mounted_helpers
|
39
51
|
extend ::AbstractController::Railties::RoutesHelpers.with(app.routes)
|
40
|
-
extend ::ActionController::Railties::
|
41
|
-
|
52
|
+
extend ::ActionController::Railties::Helpers
|
53
|
+
|
54
|
+
options.each do |k,v|
|
55
|
+
k = "#{k}="
|
56
|
+
if respond_to?(k)
|
57
|
+
send(k, v)
|
58
|
+
elsif !Base.respond_to?(k)
|
59
|
+
raise "Invalid option key: #{k}"
|
60
|
+
end
|
61
|
+
end
|
42
62
|
end
|
43
63
|
end
|
44
64
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ActionController
|
2
|
+
module Railties
|
3
|
+
module Helpers
|
4
|
+
def inherited(klass)
|
5
|
+
super
|
6
|
+
return unless klass.respond_to?(:helpers_path=)
|
7
|
+
|
8
|
+
if namespace = klass.parents.detect { |m| m.respond_to?(:railtie_helpers_paths) }
|
9
|
+
paths = namespace.railtie_helpers_paths
|
10
|
+
else
|
11
|
+
paths = ActionController::Helpers.helpers_path
|
12
|
+
end
|
13
|
+
|
14
|
+
klass.helpers_path = paths
|
15
|
+
|
16
|
+
if klass.superclass == ActionController::Base && ActionController::Base.include_all_helpers
|
17
|
+
klass.helper :all
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|