actionpack 3.2.22.5 → 4.0.0.beta1
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 +4 -4
- data/CHANGELOG.md +641 -418
- data/MIT-LICENSE +1 -1
- data/README.rdoc +5 -288
- data/lib/abstract_controller.rb +1 -8
- data/lib/abstract_controller/asset_paths.rb +2 -2
- data/lib/abstract_controller/base.rb +39 -37
- data/lib/abstract_controller/callbacks.rb +101 -82
- data/lib/abstract_controller/collector.rb +7 -3
- data/lib/abstract_controller/helpers.rb +23 -11
- data/lib/abstract_controller/layouts.rb +68 -73
- data/lib/abstract_controller/logger.rb +1 -2
- data/lib/abstract_controller/rendering.rb +22 -13
- data/lib/abstract_controller/translation.rb +16 -1
- data/lib/abstract_controller/url_for.rb +6 -6
- data/lib/abstract_controller/view_paths.rb +1 -1
- data/lib/action_controller.rb +15 -6
- data/lib/action_controller/base.rb +46 -22
- data/lib/action_controller/caching.rb +46 -33
- data/lib/action_controller/caching/fragments.rb +23 -53
- data/lib/action_controller/deprecated.rb +5 -1
- data/lib/action_controller/deprecated/integration_test.rb +3 -0
- data/lib/action_controller/log_subscriber.rb +11 -8
- data/lib/action_controller/metal.rb +16 -30
- data/lib/action_controller/metal/conditional_get.rb +76 -32
- data/lib/action_controller/metal/data_streaming.rb +20 -26
- data/lib/action_controller/metal/exceptions.rb +19 -6
- data/lib/action_controller/metal/flash.rb +24 -9
- data/lib/action_controller/metal/force_ssl.rb +32 -9
- data/lib/action_controller/metal/head.rb +25 -4
- data/lib/action_controller/metal/helpers.rb +6 -9
- data/lib/action_controller/metal/hide_actions.rb +1 -2
- data/lib/action_controller/metal/http_authentication.rb +105 -87
- data/lib/action_controller/metal/implicit_render.rb +1 -1
- data/lib/action_controller/metal/instrumentation.rb +2 -1
- data/lib/action_controller/metal/live.rb +141 -0
- data/lib/action_controller/metal/mime_responds.rb +161 -47
- data/lib/action_controller/metal/params_wrapper.rb +112 -74
- data/lib/action_controller/metal/rack_delegation.rb +9 -3
- data/lib/action_controller/metal/redirecting.rb +15 -20
- data/lib/action_controller/metal/renderers.rb +11 -9
- data/lib/action_controller/metal/rendering.rb +8 -0
- data/lib/action_controller/metal/request_forgery_protection.rb +112 -19
- data/lib/action_controller/metal/responder.rb +20 -19
- data/lib/action_controller/metal/streaming.rb +12 -18
- data/lib/action_controller/metal/strong_parameters.rb +516 -0
- data/lib/action_controller/metal/testing.rb +13 -18
- data/lib/action_controller/metal/url_for.rb +27 -25
- data/lib/action_controller/model_naming.rb +12 -0
- data/lib/action_controller/railtie.rb +33 -17
- data/lib/action_controller/railties/helpers.rb +22 -0
- data/lib/action_controller/record_identifier.rb +18 -72
- data/lib/action_controller/test_case.rb +215 -123
- data/lib/action_controller/vendor/html-scanner.rb +4 -19
- data/lib/action_dispatch.rb +27 -19
- data/lib/action_dispatch/http/cache.rb +63 -11
- data/lib/action_dispatch/http/filter_parameters.rb +18 -8
- data/lib/action_dispatch/http/filter_redirect.rb +37 -0
- data/lib/action_dispatch/http/headers.rb +27 -19
- data/lib/action_dispatch/http/mime_negotiation.rb +25 -2
- data/lib/action_dispatch/http/mime_type.rb +145 -113
- data/lib/action_dispatch/http/mime_types.rb +1 -1
- data/lib/action_dispatch/http/parameter_filter.rb +44 -46
- data/lib/action_dispatch/http/parameters.rb +12 -5
- data/lib/action_dispatch/http/rack_cache.rb +2 -3
- data/lib/action_dispatch/http/request.rb +49 -18
- data/lib/action_dispatch/http/response.rb +129 -35
- data/lib/action_dispatch/http/upload.rb +60 -17
- data/lib/action_dispatch/http/url.rb +53 -31
- data/lib/action_dispatch/journey.rb +5 -0
- data/lib/action_dispatch/journey/backwards.rb +5 -0
- data/lib/action_dispatch/journey/formatter.rb +146 -0
- data/lib/action_dispatch/journey/gtg/builder.rb +162 -0
- data/lib/action_dispatch/journey/gtg/simulator.rb +44 -0
- data/lib/action_dispatch/journey/gtg/transition_table.rb +156 -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 +124 -0
- data/lib/action_dispatch/journey/parser.rb +206 -0
- data/lib/action_dispatch/journey/parser.y +47 -0
- data/lib/action_dispatch/journey/parser_extras.rb +23 -0
- data/lib/action_dispatch/journey/path/pattern.rb +196 -0
- data/lib/action_dispatch/journey/route.rb +116 -0
- data/lib/action_dispatch/journey/router.rb +164 -0
- data/lib/action_dispatch/journey/router/strexp.rb +24 -0
- data/lib/action_dispatch/journey/router/utils.rb +54 -0
- data/lib/action_dispatch/journey/routes.rb +75 -0
- data/lib/action_dispatch/journey/scanner.rb +61 -0
- data/lib/action_dispatch/journey/visitors.rb +189 -0
- data/lib/action_dispatch/journey/visualizer/fsm.css +34 -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/middleware/callbacks.rb +9 -4
- data/lib/action_dispatch/middleware/cookies.rb +168 -57
- data/lib/action_dispatch/middleware/debug_exceptions.rb +26 -17
- data/lib/action_dispatch/middleware/exception_wrapper.rb +27 -3
- data/lib/action_dispatch/middleware/flash.rb +58 -58
- data/lib/action_dispatch/middleware/params_parser.rb +14 -29
- data/lib/action_dispatch/middleware/public_exceptions.rb +31 -14
- data/lib/action_dispatch/middleware/reloader.rb +6 -6
- data/lib/action_dispatch/middleware/remote_ip.rb +145 -39
- data/lib/action_dispatch/middleware/request_id.rb +2 -6
- 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 +81 -7
- data/lib/action_dispatch/middleware/session/mem_cache_store.rb +8 -3
- data/lib/action_dispatch/middleware/show_exceptions.rb +12 -45
- data/lib/action_dispatch/middleware/ssl.rb +70 -0
- data/lib/action_dispatch/middleware/stack.rb +6 -1
- data/lib/action_dispatch/middleware/static.rb +5 -24
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb +14 -11
- data/lib/action_dispatch/middleware/templates/rescues/_source.erb +25 -0
- data/lib/action_dispatch/middleware/templates/rescues/_trace.erb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +15 -9
- data/lib/action_dispatch/middleware/templates/rescues/layout.erb +121 -5
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.erb +7 -2
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.erb +30 -15
- data/lib/action_dispatch/middleware/templates/rescues/template_error.erb +39 -13
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.erb +6 -2
- data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +16 -0
- data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +144 -0
- data/lib/action_dispatch/railtie.rb +16 -6
- data/lib/action_dispatch/request/session.rb +181 -0
- data/lib/action_dispatch/routing.rb +41 -40
- data/lib/action_dispatch/routing/inspector.rb +240 -0
- data/lib/action_dispatch/routing/mapper.rb +501 -273
- data/lib/action_dispatch/routing/polymorphic_routes.rb +16 -20
- data/lib/action_dispatch/routing/redirection.rb +46 -29
- data/lib/action_dispatch/routing/route_set.rb +203 -164
- data/lib/action_dispatch/routing/routes_proxy.rb +2 -0
- data/lib/action_dispatch/routing/url_for.rb +48 -33
- data/lib/action_dispatch/testing/assertions/dom.rb +3 -13
- data/lib/action_dispatch/testing/assertions/response.rb +32 -40
- data/lib/action_dispatch/testing/assertions/routing.rb +40 -39
- data/lib/action_dispatch/testing/assertions/selector.rb +15 -20
- data/lib/action_dispatch/testing/assertions/tag.rb +20 -23
- data/lib/action_dispatch/testing/integration.rb +41 -22
- data/lib/action_dispatch/testing/test_process.rb +9 -6
- data/lib/action_dispatch/testing/test_request.rb +7 -3
- data/lib/action_pack.rb +1 -1
- data/lib/action_pack/version.rb +4 -4
- data/lib/action_view.rb +17 -8
- data/lib/action_view/base.rb +15 -34
- data/lib/action_view/buffers.rb +1 -1
- data/lib/action_view/context.rb +4 -4
- data/lib/action_view/dependency_tracker.rb +91 -0
- data/lib/action_view/digestor.rb +85 -0
- data/lib/action_view/flows.rb +1 -4
- data/lib/action_view/helpers.rb +2 -4
- data/lib/action_view/helpers/active_model_helper.rb +3 -4
- data/lib/action_view/helpers/asset_tag_helper.rb +211 -353
- data/lib/action_view/helpers/asset_url_helper.rb +354 -0
- data/lib/action_view/helpers/atom_feed_helper.rb +13 -10
- data/lib/action_view/helpers/cache_helper.rb +150 -18
- data/lib/action_view/helpers/capture_helper.rb +42 -29
- data/lib/action_view/helpers/csrf_helper.rb +0 -2
- data/lib/action_view/helpers/date_helper.rb +268 -247
- data/lib/action_view/helpers/debug_helper.rb +10 -11
- data/lib/action_view/helpers/form_helper.rb +904 -547
- data/lib/action_view/helpers/form_options_helper.rb +341 -166
- data/lib/action_view/helpers/form_tag_helper.rb +188 -88
- data/lib/action_view/helpers/javascript_helper.rb +23 -16
- data/lib/action_view/helpers/number_helper.rb +148 -354
- data/lib/action_view/helpers/output_safety_helper.rb +3 -3
- data/lib/action_view/helpers/record_tag_helper.rb +17 -22
- data/lib/action_view/helpers/rendering_helper.rb +2 -4
- data/lib/action_view/helpers/sanitize_helper.rb +3 -6
- data/lib/action_view/helpers/tag_helper.rb +43 -37
- data/lib/action_view/helpers/tags.rb +39 -0
- data/lib/action_view/helpers/tags/base.rb +148 -0
- data/lib/action_view/helpers/tags/check_box.rb +64 -0
- data/lib/action_view/helpers/tags/checkable.rb +16 -0
- data/lib/action_view/helpers/tags/collection_check_boxes.rb +43 -0
- data/lib/action_view/helpers/tags/collection_helpers.rb +83 -0
- data/lib/action_view/helpers/tags/collection_radio_buttons.rb +36 -0
- data/lib/action_view/helpers/tags/collection_select.rb +28 -0
- data/lib/action_view/helpers/tags/color_field.rb +25 -0
- data/lib/action_view/helpers/tags/date_field.rb +13 -0
- data/lib/action_view/helpers/tags/date_select.rb +72 -0
- data/lib/action_view/helpers/tags/datetime_field.rb +22 -0
- data/lib/action_view/helpers/tags/datetime_local_field.rb +19 -0
- data/lib/action_view/helpers/tags/datetime_select.rb +8 -0
- data/lib/action_view/helpers/tags/email_field.rb +8 -0
- data/lib/action_view/helpers/tags/file_field.rb +8 -0
- data/lib/action_view/helpers/tags/grouped_collection_select.rb +29 -0
- data/lib/action_view/helpers/tags/hidden_field.rb +8 -0
- data/lib/action_view/helpers/tags/label.rb +65 -0
- data/lib/action_view/helpers/tags/month_field.rb +13 -0
- data/lib/action_view/helpers/tags/number_field.rb +18 -0
- data/lib/action_view/helpers/tags/password_field.rb +12 -0
- data/lib/action_view/helpers/tags/radio_button.rb +31 -0
- data/lib/action_view/helpers/tags/range_field.rb +8 -0
- data/lib/action_view/helpers/tags/search_field.rb +24 -0
- data/lib/action_view/helpers/tags/select.rb +41 -0
- data/lib/action_view/helpers/tags/tel_field.rb +8 -0
- data/lib/action_view/helpers/tags/text_area.rb +18 -0
- data/lib/action_view/helpers/tags/text_field.rb +29 -0
- data/lib/action_view/helpers/tags/time_field.rb +13 -0
- data/lib/action_view/helpers/tags/time_select.rb +8 -0
- data/lib/action_view/helpers/tags/time_zone_select.rb +20 -0
- data/lib/action_view/helpers/tags/url_field.rb +8 -0
- data/lib/action_view/helpers/tags/week_field.rb +13 -0
- data/lib/action_view/helpers/text_helper.rb +126 -113
- data/lib/action_view/helpers/translation_helper.rb +32 -16
- data/lib/action_view/helpers/url_helper.rb +200 -271
- data/lib/action_view/locale/en.yml +1 -105
- data/lib/action_view/log_subscriber.rb +6 -4
- data/lib/action_view/lookup_context.rb +15 -39
- data/lib/action_view/model_naming.rb +12 -0
- data/lib/action_view/path_set.rb +9 -39
- data/lib/action_view/railtie.rb +6 -22
- data/lib/action_view/record_identifier.rb +84 -0
- data/lib/action_view/renderer/abstract_renderer.rb +10 -19
- data/lib/action_view/renderer/partial_renderer.rb +144 -81
- data/lib/action_view/renderer/renderer.rb +2 -19
- data/lib/action_view/renderer/streaming_template_renderer.rb +2 -5
- data/lib/action_view/renderer/template_renderer.rb +14 -13
- data/lib/action_view/routing_url_for.rb +107 -0
- data/lib/action_view/template.rb +22 -21
- data/lib/action_view/template/error.rb +22 -12
- data/lib/action_view/template/handlers.rb +12 -9
- data/lib/action_view/template/handlers/builder.rb +1 -1
- data/lib/action_view/template/handlers/erb.rb +11 -16
- data/lib/action_view/template/handlers/raw.rb +11 -0
- data/lib/action_view/template/resolver.rb +111 -83
- data/lib/action_view/template/text.rb +12 -8
- data/lib/action_view/template/types.rb +57 -0
- data/lib/action_view/test_case.rb +66 -43
- data/lib/action_view/testing/resolvers.rb +3 -2
- data/lib/action_view/vendor/html-scanner.rb +20 -0
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/document.rb +0 -0
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/node.rb +12 -12
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/sanitizer.rb +18 -7
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/selector.rb +1 -1
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/tokenizer.rb +1 -1
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/version.rb +0 -0
- metadata +135 -125
- 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/performance_test.rb +0 -1
- data/lib/action_controller/metal/compatibility.rb +0 -65
- data/lib/action_controller/metal/session_management.rb +0 -14
- data/lib/action_controller/railties/paths.rb +0 -25
- 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/testing/performance_test.rb +0 -10
- data/lib/action_view/asset_paths.rb +0 -142
- data/lib/action_view/helpers/asset_paths.rb +0 -7
- 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/sprockets/assets.rake +0 -99
- data/lib/sprockets/bootstrap.rb +0 -37
- data/lib/sprockets/compressors.rb +0 -83
- data/lib/sprockets/helpers.rb +0 -6
- data/lib/sprockets/helpers/isolated_helper.rb +0 -13
- data/lib/sprockets/helpers/rails_helper.rb +0 -182
- data/lib/sprockets/railtie.rb +0 -62
- data/lib/sprockets/static_compiler.rb +0 -56
@@ -1 +0,0 @@
|
|
1
|
-
ActionController::PerformanceTest = ActionDispatch::PerformanceTest
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'active_support/deprecation'
|
2
|
-
|
3
|
-
module ActionController
|
4
|
-
module Compatibility
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
# Temporary hax
|
8
|
-
included do
|
9
|
-
::ActionController::UnknownAction = ActiveSupport::Deprecation::DeprecatedConstantProxy.new('ActionController::UnknownAction', '::AbstractController::ActionNotFound')
|
10
|
-
::ActionController::DoubleRenderError = ActiveSupport::Deprecation::DeprecatedConstantProxy.new('ActionController::DoubleRenderError', '::AbstractController::DoubleRenderError')
|
11
|
-
|
12
|
-
# ROUTES TODO: This should be handled by a middleware and route generation
|
13
|
-
# should be able to handle SCRIPT_NAME
|
14
|
-
self.config.relative_url_root = ENV['RAILS_RELATIVE_URL_ROOT']
|
15
|
-
|
16
|
-
def self.default_charset=(new_charset)
|
17
|
-
ActiveSupport::Deprecation.warn "Setting default charset at controller level" \
|
18
|
-
" is deprecated, please use `config.action_dispatch.default_charset` instead", caller
|
19
|
-
ActionDispatch::Response.default_charset = new_charset
|
20
|
-
end
|
21
|
-
|
22
|
-
self.protected_instance_variables = %w(
|
23
|
-
@_status @_headers @_params @_env @_response @_request
|
24
|
-
@_view_runtime @_stream @_url_options @_action_has_layout
|
25
|
-
)
|
26
|
-
|
27
|
-
def rescue_action(env)
|
28
|
-
ActiveSupport::Deprecation.warn "Calling `rescue_action` is deprecated and will be removed in Rails 4.0.", caller
|
29
|
-
raise env["action_dispatch.rescue.exception"]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# For old tests
|
34
|
-
def initialize_template_class(*)
|
35
|
-
ActiveSupport::Deprecation.warn "Calling `initialize_template_class` is deprecated and has no effect anymore.", caller
|
36
|
-
end
|
37
|
-
|
38
|
-
def assign_shortcuts(*)
|
39
|
-
ActiveSupport::Deprecation.warn "Calling `assign_shortcuts` is deprecated and has no effect anymore.", caller
|
40
|
-
end
|
41
|
-
|
42
|
-
def _normalize_options(options)
|
43
|
-
options[:text] = nil if options.delete(:nothing) == true
|
44
|
-
options[:text] = " " if options.key?(:text) && options[:text].nil?
|
45
|
-
super
|
46
|
-
end
|
47
|
-
|
48
|
-
def render_to_body(options)
|
49
|
-
options[:template].sub!(/^\//, '') if options.key?(:template)
|
50
|
-
super || " "
|
51
|
-
end
|
52
|
-
|
53
|
-
def _handle_method_missing
|
54
|
-
ActiveSupport::Deprecation.warn "Using `method_missing` to handle non" \
|
55
|
-
" existing actions is deprecated and will be removed in Rails 4.0, " \
|
56
|
-
" please use `action_missing` instead.", caller
|
57
|
-
method_missing(@_action_name.to_sym)
|
58
|
-
end
|
59
|
-
|
60
|
-
def method_for_action(action_name)
|
61
|
-
super || ((self.class.public_method_defined?(:method_missing) ||
|
62
|
-
self.class.protected_method_defined?(:method_missing)) && "_handle_method_missing")
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module ActionController #:nodoc:
|
2
|
-
module SessionManagement #:nodoc:
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
included do
|
6
|
-
ActiveSupport::Deprecation.warn "ActionController::SessionManagement " \
|
7
|
-
"is deprecated because it has no contents since Rails 3.1", caller
|
8
|
-
end
|
9
|
-
|
10
|
-
module ClassMethods
|
11
|
-
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module ActionController
|
2
|
-
module Railties
|
3
|
-
module Paths
|
4
|
-
def self.with(app)
|
5
|
-
Module.new do
|
6
|
-
define_method(:inherited) do |klass|
|
7
|
-
super(klass)
|
8
|
-
|
9
|
-
if namespace = klass.parents.detect { |m| m.respond_to?(:railtie_helpers_paths) }
|
10
|
-
paths = namespace.railtie_helpers_paths
|
11
|
-
else
|
12
|
-
paths = app.helpers_paths
|
13
|
-
end
|
14
|
-
|
15
|
-
klass.helpers_path = paths
|
16
|
-
|
17
|
-
if klass.superclass == ActionController::Base && ActionController::Base.include_all_helpers
|
18
|
-
klass.helper :all
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module ActionDispatch
|
2
|
-
class BestStandardsSupport
|
3
|
-
def initialize(app, type = true)
|
4
|
-
@app = app
|
5
|
-
|
6
|
-
@header = case type
|
7
|
-
when true
|
8
|
-
"IE=Edge,chrome=1"
|
9
|
-
when :builtin
|
10
|
-
"IE=Edge"
|
11
|
-
when false
|
12
|
-
nil
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def call(env)
|
17
|
-
status, headers, body = @app.call(env)
|
18
|
-
|
19
|
-
if headers["X-UA-Compatible"] && @header
|
20
|
-
unless headers["X-UA-Compatible"][@header]
|
21
|
-
headers["X-UA-Compatible"] << "," << @header.to_s
|
22
|
-
end
|
23
|
-
else
|
24
|
-
headers["X-UA-Compatible"] = @header
|
25
|
-
end
|
26
|
-
|
27
|
-
[status, headers, body]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# Keep this file meanwhile https://github.com/rack/rack/pull/313 is not released
|
2
|
-
module ActionDispatch
|
3
|
-
class BodyProxy
|
4
|
-
def initialize(body, &block)
|
5
|
-
@body, @block, @closed = body, block, false
|
6
|
-
end
|
7
|
-
|
8
|
-
def respond_to?(*args)
|
9
|
-
super or @body.respond_to?(*args)
|
10
|
-
end
|
11
|
-
|
12
|
-
def close
|
13
|
-
return if @closed
|
14
|
-
@closed = true
|
15
|
-
begin
|
16
|
-
@body.close if @body.respond_to? :close
|
17
|
-
ensure
|
18
|
-
@block.call
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def closed?
|
23
|
-
@closed
|
24
|
-
end
|
25
|
-
|
26
|
-
def method_missing(*args, &block)
|
27
|
-
@body.__send__(*args, &block)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module ActionDispatch
|
2
|
-
class Head
|
3
|
-
def initialize(app)
|
4
|
-
@app = app
|
5
|
-
end
|
6
|
-
|
7
|
-
def call(env)
|
8
|
-
if env["REQUEST_METHOD"] == "HEAD"
|
9
|
-
env["REQUEST_METHOD"] = "GET"
|
10
|
-
env["rack.methodoverride.original_method"] = "HEAD"
|
11
|
-
status, headers, _ = @app.call(env)
|
12
|
-
[status, headers, []]
|
13
|
-
else
|
14
|
-
@app.call(env)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module ActionDispatch
|
2
|
-
class Rescue
|
3
|
-
def initialize(app, rescuers = {}, &block)
|
4
|
-
@app, @rescuers = app, {}
|
5
|
-
rescuers.each { |exception, rescuer| rescue_from(exception, rescuer) }
|
6
|
-
instance_eval(&block) if block_given?
|
7
|
-
end
|
8
|
-
|
9
|
-
def call(env)
|
10
|
-
@app.call(env)
|
11
|
-
rescue Exception => exception
|
12
|
-
if rescuer = @rescuers[exception.class.name]
|
13
|
-
env['action_dispatch.rescue.exception'] = exception
|
14
|
-
rescuer.call(env)
|
15
|
-
else
|
16
|
-
raise exception
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
protected
|
21
|
-
def rescue_from(exception, rescuer)
|
22
|
-
exception = exception.class.name if exception.is_a?(Exception)
|
23
|
-
@rescuers[exception.to_s] = rescuer
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
require 'active_support/testing/performance'
|
2
|
-
|
3
|
-
module ActionDispatch
|
4
|
-
# An integration test that runs a code profiler on your test methods.
|
5
|
-
# Profiling output for combinations of each test method, measurement, and
|
6
|
-
# output format are written to your tmp/performance directory.
|
7
|
-
class PerformanceTest < ActionDispatch::IntegrationTest
|
8
|
-
include ActiveSupport::Testing::Performance
|
9
|
-
end
|
10
|
-
end
|
@@ -1,142 +0,0 @@
|
|
1
|
-
require 'zlib'
|
2
|
-
require 'active_support/core_ext/file'
|
3
|
-
require 'action_controller/metal/exceptions'
|
4
|
-
|
5
|
-
module ActionView
|
6
|
-
class AssetPaths #:nodoc:
|
7
|
-
attr_reader :config, :controller
|
8
|
-
|
9
|
-
def initialize(config, controller = nil)
|
10
|
-
@config = config
|
11
|
-
@controller = controller
|
12
|
-
end
|
13
|
-
|
14
|
-
# Add the extension +ext+ if not present. Return full or scheme-relative URLs otherwise untouched.
|
15
|
-
# Prefix with <tt>/dir/</tt> if lacking a leading +/+. Account for relative URL
|
16
|
-
# roots. Rewrite the asset path for cache-busting asset ids. Include
|
17
|
-
# asset host, if configured, with the correct request protocol.
|
18
|
-
#
|
19
|
-
# When :relative (default), the protocol will be determined by the client using current protocol
|
20
|
-
# When :request, the protocol will be the request protocol
|
21
|
-
# Otherwise, the protocol is used (E.g. :http, :https, etc)
|
22
|
-
def compute_public_path(source, dir, options = {})
|
23
|
-
source = source.to_s
|
24
|
-
return source if is_uri?(source)
|
25
|
-
|
26
|
-
source = rewrite_extension(source, dir, options[:ext]) if options[:ext]
|
27
|
-
source = rewrite_asset_path(source, dir, options)
|
28
|
-
source = rewrite_relative_url_root(source, relative_url_root)
|
29
|
-
source = rewrite_host_and_protocol(source, options[:protocol])
|
30
|
-
source
|
31
|
-
end
|
32
|
-
|
33
|
-
# Return the filesystem path for the source
|
34
|
-
def compute_source_path(source, dir, ext)
|
35
|
-
source = rewrite_extension(source, dir, ext) if ext
|
36
|
-
|
37
|
-
sources = []
|
38
|
-
sources << config.assets_dir
|
39
|
-
sources << dir unless source[0] == ?/
|
40
|
-
sources << source
|
41
|
-
|
42
|
-
File.join(sources)
|
43
|
-
end
|
44
|
-
|
45
|
-
def is_uri?(path)
|
46
|
-
path =~ %r{^[-a-z]+://|^(?:cid|data):|^//}i
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def rewrite_extension(source, dir, ext)
|
52
|
-
raise NotImplementedError
|
53
|
-
end
|
54
|
-
|
55
|
-
def rewrite_asset_path(source, path = nil)
|
56
|
-
raise NotImplementedError
|
57
|
-
end
|
58
|
-
|
59
|
-
def rewrite_relative_url_root(source, relative_url_root)
|
60
|
-
relative_url_root && !source.starts_with?("#{relative_url_root}/") ? "#{relative_url_root}#{source}" : source
|
61
|
-
end
|
62
|
-
|
63
|
-
def has_request?
|
64
|
-
controller.respond_to?(:request)
|
65
|
-
end
|
66
|
-
|
67
|
-
def rewrite_host_and_protocol(source, protocol = nil)
|
68
|
-
host = compute_asset_host(source)
|
69
|
-
if host && !is_uri?(host)
|
70
|
-
if (protocol || default_protocol) == :request && !has_request?
|
71
|
-
host = nil
|
72
|
-
else
|
73
|
-
host = "#{compute_protocol(protocol)}#{host}"
|
74
|
-
end
|
75
|
-
end
|
76
|
-
host ? "#{host}#{source}" : source
|
77
|
-
end
|
78
|
-
|
79
|
-
def compute_protocol(protocol)
|
80
|
-
protocol ||= default_protocol
|
81
|
-
case protocol
|
82
|
-
when :relative
|
83
|
-
"//"
|
84
|
-
when :request
|
85
|
-
unless @controller
|
86
|
-
invalid_asset_host!("The protocol requested was :request. Consider using :relative instead.")
|
87
|
-
end
|
88
|
-
@controller.request.protocol
|
89
|
-
else
|
90
|
-
"#{protocol}://"
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def default_protocol
|
95
|
-
@config.default_asset_host_protocol || (has_request? ? :request : :relative)
|
96
|
-
end
|
97
|
-
|
98
|
-
def invalid_asset_host!(help_message)
|
99
|
-
raise ActionController::RoutingError, "This asset host cannot be computed without a request in scope. #{help_message}"
|
100
|
-
end
|
101
|
-
|
102
|
-
# Pick an asset host for this source. Returns +nil+ if no host is set,
|
103
|
-
# the host if no wildcard is set, the host interpolated with the
|
104
|
-
# numbers 0-3 if it contains <tt>%d</tt> (the number is the source hash mod 4),
|
105
|
-
# or the value returned from invoking call on an object responding to call
|
106
|
-
# (proc or otherwise).
|
107
|
-
def compute_asset_host(source)
|
108
|
-
if host = asset_host_config
|
109
|
-
if host.respond_to?(:call)
|
110
|
-
args = [source]
|
111
|
-
arity = arity_of(host)
|
112
|
-
if (arity > 1 || arity < -2) && !has_request?
|
113
|
-
invalid_asset_host!("Remove the second argument to your asset_host Proc if you do not need the request, or make it optional.")
|
114
|
-
end
|
115
|
-
args << current_request if (arity > 1 || arity < 0) && has_request?
|
116
|
-
host.call(*args)
|
117
|
-
else
|
118
|
-
(host =~ /%d/) ? host % (Zlib.crc32(source) % 4) : host
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
def relative_url_root
|
124
|
-
config.relative_url_root
|
125
|
-
end
|
126
|
-
|
127
|
-
def asset_host_config
|
128
|
-
config.asset_host
|
129
|
-
end
|
130
|
-
|
131
|
-
# Returns the current request if one exists.
|
132
|
-
def current_request
|
133
|
-
controller.request if has_request?
|
134
|
-
end
|
135
|
-
|
136
|
-
# Returns the arity of a callable
|
137
|
-
def arity_of(callable)
|
138
|
-
callable.respond_to?(:arity) ? callable.arity : callable.method(:call).arity
|
139
|
-
end
|
140
|
-
|
141
|
-
end
|
142
|
-
end
|
@@ -1,146 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/class/attribute'
|
2
|
-
require 'active_support/core_ext/string/inflections'
|
3
|
-
require 'active_support/core_ext/file'
|
4
|
-
require 'action_view/helpers/tag_helper'
|
5
|
-
|
6
|
-
module ActionView
|
7
|
-
module Helpers
|
8
|
-
module AssetTagHelper
|
9
|
-
|
10
|
-
class AssetIncludeTag
|
11
|
-
include TagHelper
|
12
|
-
|
13
|
-
attr_reader :config, :asset_paths
|
14
|
-
class_attribute :expansions
|
15
|
-
|
16
|
-
def self.inherited(base)
|
17
|
-
base.expansions = { }
|
18
|
-
end
|
19
|
-
|
20
|
-
def initialize(config, asset_paths)
|
21
|
-
@config = config
|
22
|
-
@asset_paths = asset_paths
|
23
|
-
end
|
24
|
-
|
25
|
-
def asset_name
|
26
|
-
raise NotImplementedError
|
27
|
-
end
|
28
|
-
|
29
|
-
def extension
|
30
|
-
raise NotImplementedError
|
31
|
-
end
|
32
|
-
|
33
|
-
def custom_dir
|
34
|
-
raise NotImplementedError
|
35
|
-
end
|
36
|
-
|
37
|
-
def asset_tag(source, options)
|
38
|
-
raise NotImplementedError
|
39
|
-
end
|
40
|
-
|
41
|
-
def include_tag(*sources)
|
42
|
-
options = sources.extract_options!.stringify_keys
|
43
|
-
concat = options.delete("concat")
|
44
|
-
cache = concat || options.delete("cache")
|
45
|
-
recursive = options.delete("recursive")
|
46
|
-
|
47
|
-
if concat || (config.perform_caching && cache)
|
48
|
-
joined_name = (cache == true ? "all" : cache) + ".#{extension}"
|
49
|
-
joined_path = File.join((joined_name[/^#{File::SEPARATOR}/] ? config.assets_dir : custom_dir), joined_name)
|
50
|
-
unless config.perform_caching && File.exists?(joined_path)
|
51
|
-
write_asset_file_contents(joined_path, compute_paths(sources, recursive))
|
52
|
-
end
|
53
|
-
asset_tag(joined_name, options)
|
54
|
-
else
|
55
|
-
sources = expand_sources(sources, recursive)
|
56
|
-
ensure_sources!(sources) if cache
|
57
|
-
sources.collect { |source| asset_tag(source, options) }.join("\n").html_safe
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
private
|
62
|
-
|
63
|
-
def path_to_asset(source, options = {})
|
64
|
-
asset_paths.compute_public_path(source, asset_name.to_s.pluralize, options.merge(:ext => extension))
|
65
|
-
end
|
66
|
-
|
67
|
-
def path_to_asset_source(source)
|
68
|
-
asset_paths.compute_source_path(source, asset_name.to_s.pluralize, extension)
|
69
|
-
end
|
70
|
-
|
71
|
-
def compute_paths(*args)
|
72
|
-
expand_sources(*args).collect { |source| path_to_asset_source(source) }
|
73
|
-
end
|
74
|
-
|
75
|
-
def expand_sources(sources, recursive)
|
76
|
-
if sources.first == :all
|
77
|
-
collect_asset_files(custom_dir, ('**' if recursive), "*.#{extension}")
|
78
|
-
else
|
79
|
-
sources.inject([]) do |list, source|
|
80
|
-
determined_source = determine_source(source, expansions)
|
81
|
-
update_source_list(list, determined_source)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def update_source_list(list, source)
|
87
|
-
case source
|
88
|
-
when String
|
89
|
-
list.delete(source)
|
90
|
-
list << source
|
91
|
-
when Array
|
92
|
-
updated_sources = source - list
|
93
|
-
list.concat(updated_sources)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
def ensure_sources!(sources)
|
98
|
-
sources.each do |source|
|
99
|
-
asset_file_path!(path_to_asset_source(source))
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def collect_asset_files(*path)
|
104
|
-
dir = path.first
|
105
|
-
|
106
|
-
Dir[File.join(*path.compact)].collect do |file|
|
107
|
-
file[-(file.size - dir.size - 1)..-1].sub(/\.\w+$/, '')
|
108
|
-
end.sort
|
109
|
-
end
|
110
|
-
|
111
|
-
def determine_source(source, collection)
|
112
|
-
case source
|
113
|
-
when Symbol
|
114
|
-
collection[source] || raise(ArgumentError, "No expansion found for #{source.inspect}")
|
115
|
-
else
|
116
|
-
source
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
def join_asset_file_contents(paths)
|
121
|
-
paths.collect { |path| File.read(asset_file_path!(path, true)) }.join("\n\n")
|
122
|
-
end
|
123
|
-
|
124
|
-
def write_asset_file_contents(joined_asset_path, asset_paths)
|
125
|
-
FileUtils.mkdir_p(File.dirname(joined_asset_path))
|
126
|
-
File.atomic_write(joined_asset_path) { |cache| cache.write(join_asset_file_contents(asset_paths)) }
|
127
|
-
|
128
|
-
# Set mtime to the latest of the combined files to allow for
|
129
|
-
# consistent ETag without a shared filesystem.
|
130
|
-
mt = asset_paths.map { |p| File.mtime(asset_file_path!(p)) }.max
|
131
|
-
File.utime(mt, mt, joined_asset_path)
|
132
|
-
end
|
133
|
-
|
134
|
-
def asset_file_path!(absolute_path, error_if_file_is_uri = false)
|
135
|
-
if asset_paths.is_uri?(absolute_path)
|
136
|
-
raise(Errno::ENOENT, "Asset file #{path} is uri and cannot be merged into single file") if error_if_file_is_uri
|
137
|
-
else
|
138
|
-
raise(Errno::ENOENT, "Asset file not found at '#{absolute_path}'" ) unless File.exist?(absolute_path)
|
139
|
-
return absolute_path
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|