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,107 +0,0 @@
|
|
1
|
-
require 'strscan'
|
2
|
-
|
3
|
-
module HTML #:nodoc:
|
4
|
-
|
5
|
-
# A simple HTML tokenizer. It simply breaks a stream of text into tokens, where each
|
6
|
-
# token is a string. Each string represents either "text", or an HTML element.
|
7
|
-
#
|
8
|
-
# This currently assumes valid XHTML, which means no free < or > characters.
|
9
|
-
#
|
10
|
-
# Usage:
|
11
|
-
#
|
12
|
-
# tokenizer = HTML::Tokenizer.new(text)
|
13
|
-
# while token = tokenizer.next
|
14
|
-
# p token
|
15
|
-
# end
|
16
|
-
class Tokenizer #:nodoc:
|
17
|
-
|
18
|
-
# The current (byte) position in the text
|
19
|
-
attr_reader :position
|
20
|
-
|
21
|
-
# The current line number
|
22
|
-
attr_reader :line
|
23
|
-
|
24
|
-
# Create a new Tokenizer for the given text.
|
25
|
-
def initialize(text)
|
26
|
-
text.encode! if text.encoding_aware?
|
27
|
-
@scanner = StringScanner.new(text)
|
28
|
-
@position = 0
|
29
|
-
@line = 0
|
30
|
-
@current_line = 1
|
31
|
-
end
|
32
|
-
|
33
|
-
# Return the next token in the sequence, or +nil+ if there are no more tokens in
|
34
|
-
# the stream.
|
35
|
-
def next
|
36
|
-
return nil if @scanner.eos?
|
37
|
-
@position = @scanner.pos
|
38
|
-
@line = @current_line
|
39
|
-
if @scanner.check(/<\S/)
|
40
|
-
update_current_line(scan_tag)
|
41
|
-
else
|
42
|
-
update_current_line(scan_text)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
# Treat the text at the current position as a tag, and scan it. Supports
|
49
|
-
# comments, doctype tags, and regular tags, and ignores less-than and
|
50
|
-
# greater-than characters within quoted strings.
|
51
|
-
def scan_tag
|
52
|
-
tag = @scanner.getch
|
53
|
-
if @scanner.scan(/!--/) # comment
|
54
|
-
tag << @scanner.matched
|
55
|
-
tag << (@scanner.scan_until(/--\s*>/) || @scanner.scan_until(/\Z/))
|
56
|
-
elsif @scanner.scan(/!\[CDATA\[/)
|
57
|
-
tag << @scanner.matched
|
58
|
-
tag << (@scanner.scan_until(/\]\]>/) || @scanner.scan_until(/\Z/))
|
59
|
-
elsif @scanner.scan(/!/) # doctype
|
60
|
-
tag << @scanner.matched
|
61
|
-
tag << consume_quoted_regions
|
62
|
-
else
|
63
|
-
tag << consume_quoted_regions
|
64
|
-
end
|
65
|
-
tag
|
66
|
-
end
|
67
|
-
|
68
|
-
# Scan all text up to the next < character and return it.
|
69
|
-
def scan_text
|
70
|
-
"#{@scanner.getch}#{@scanner.scan(/[^<]*/)}"
|
71
|
-
end
|
72
|
-
|
73
|
-
# Counts the number of newlines in the text and updates the current line
|
74
|
-
# accordingly.
|
75
|
-
def update_current_line(text)
|
76
|
-
text.scan(/\r?\n/) { @current_line += 1 }
|
77
|
-
end
|
78
|
-
|
79
|
-
# Skips over quoted strings, so that less-than and greater-than characters
|
80
|
-
# within the strings are ignored.
|
81
|
-
def consume_quoted_regions
|
82
|
-
text = ""
|
83
|
-
loop do
|
84
|
-
match = @scanner.scan_until(/['"<>]/) or break
|
85
|
-
|
86
|
-
delim = @scanner.matched
|
87
|
-
if delim == "<"
|
88
|
-
match = match.chop
|
89
|
-
@scanner.pos -= 1
|
90
|
-
end
|
91
|
-
|
92
|
-
text << match
|
93
|
-
break if delim == "<" || delim == ">"
|
94
|
-
|
95
|
-
# consume the quoted region
|
96
|
-
while match = @scanner.scan_until(/[\\#{delim}]/)
|
97
|
-
text << match
|
98
|
-
break if @scanner.matched == delim
|
99
|
-
break if @scanner.eos?
|
100
|
-
text << @scanner.getch # skip the escaped character
|
101
|
-
end
|
102
|
-
end
|
103
|
-
text
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
$LOAD_PATH << "#{File.dirname(__FILE__)}/html-scanner"
|
2
|
-
|
3
|
-
module HTML
|
4
|
-
extend ActiveSupport::Autoload
|
5
|
-
|
6
|
-
eager_autoload do
|
7
|
-
autoload :CDATA, 'html/node'
|
8
|
-
autoload :Document, 'html/document'
|
9
|
-
autoload :FullSanitizer, 'html/sanitizer'
|
10
|
-
autoload :LinkSanitizer, 'html/sanitizer'
|
11
|
-
autoload :Node, 'html/node'
|
12
|
-
autoload :Sanitizer, 'html/sanitizer'
|
13
|
-
autoload :Selector, 'html/selector'
|
14
|
-
autoload :Tag, 'html/node'
|
15
|
-
autoload :Text, 'html/node'
|
16
|
-
autoload :Tokenizer, 'html/tokenizer'
|
17
|
-
autoload :Version, 'html/version'
|
18
|
-
autoload :WhiteListSanitizer, 'html/sanitizer'
|
19
|
-
end
|
20
|
-
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,31 +0,0 @@
|
|
1
|
-
<% unless @exception.blamed_files.blank? %>
|
2
|
-
<% if (hide = @exception.blamed_files.length > 8) %>
|
3
|
-
<a href="#" onclick="document.getElementById('blame_trace').style.display='block'; return false;">Show blamed files</a>
|
4
|
-
<% end %>
|
5
|
-
<pre id="blame_trace" <%='style="display:none"' if hide %>><code><%=h @exception.describe_blame %></code></pre>
|
6
|
-
<% end %>
|
7
|
-
|
8
|
-
<%
|
9
|
-
clean_params = @request.filtered_parameters.clone
|
10
|
-
clean_params.delete("action")
|
11
|
-
clean_params.delete("controller")
|
12
|
-
|
13
|
-
request_dump = clean_params.empty? ? 'None' : clean_params.inspect.gsub(',', ",\n")
|
14
|
-
|
15
|
-
def debug_hash(hash)
|
16
|
-
hash.sort_by { |k, v| k.to_s }.map { |k, v| "#{k}: #{v.inspect rescue $!.message}" }.join("\n")
|
17
|
-
end unless self.class.method_defined?(:debug_hash)
|
18
|
-
%>
|
19
|
-
|
20
|
-
<h2 style="margin-top: 30px">Request</h2>
|
21
|
-
<p><b>Parameters</b>: <pre><%=h request_dump %></pre></p>
|
22
|
-
|
23
|
-
<p><a href="#" onclick="document.getElementById('session_dump').style.display='block'; return false;">Show session dump</a></p>
|
24
|
-
<div id="session_dump" style="display:none"><pre><%= debug_hash @request.session %></pre></div>
|
25
|
-
|
26
|
-
<p><a href="#" onclick="document.getElementById('env_dump').style.display='block'; return false;">Show env dump</a></p>
|
27
|
-
<div id="env_dump" style="display:none"><pre><%= debug_hash @request.env.slice(*@request.class::ENV_METHODS) %></pre></div>
|
28
|
-
|
29
|
-
|
30
|
-
<h2 style="margin-top: 30px">Response</h2>
|
31
|
-
<p><b>Headers</b>: <pre><%=h defined?(@response) ? @response.headers.inspect.gsub(',', ",\n") : 'None' %></pre></p>
|
@@ -1,26 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
traces = [
|
3
|
-
["Application Trace", @application_trace],
|
4
|
-
["Framework Trace", @framework_trace],
|
5
|
-
["Full Trace", @full_trace]
|
6
|
-
]
|
7
|
-
names = traces.collect {|name, trace| name}
|
8
|
-
%>
|
9
|
-
|
10
|
-
<p><code>Rails.root: <%= defined?(Rails) && Rails.respond_to?(:root) ? Rails.root : "unset" %></code></p>
|
11
|
-
|
12
|
-
<div id="traces">
|
13
|
-
<% names.each do |name| %>
|
14
|
-
<%
|
15
|
-
show = "document.getElementById('#{name.gsub(/\s/, '-')}').style.display='block';"
|
16
|
-
hide = (names - [name]).collect {|hide_name| "document.getElementById('#{hide_name.gsub(/\s/, '-')}').style.display='none';"}
|
17
|
-
%>
|
18
|
-
<a href="#" onclick="<%= hide.join %><%= show %>; return false;"><%= name %></a> <%= '|' unless names.last == name %>
|
19
|
-
<% end %>
|
20
|
-
|
21
|
-
<% traces.each do |name, trace| %>
|
22
|
-
<div id="<%= name.gsub(/\s/, '-') %>" style="display: <%= (name == "Application Trace") ? 'block' : 'none' %>;">
|
23
|
-
<pre><code><%=h trace.join "\n" %></code></pre>
|
24
|
-
</div>
|
25
|
-
<% end %>
|
26
|
-
</div>
|
@@ -1,10 +0,0 @@
|
|
1
|
-
<h1>
|
2
|
-
<%=h @exception.class.to_s %>
|
3
|
-
<% if @request.parameters['controller'] %>
|
4
|
-
in <%=h @request.parameters['controller'].camelize %>Controller<% if @request.parameters['action'] %>#<%=h @request.parameters['action'] %><% end %>
|
5
|
-
<% end %>
|
6
|
-
</h1>
|
7
|
-
<pre><%=h @exception.message %></pre>
|
8
|
-
|
9
|
-
<%= render :template => "rescues/_trace" %>
|
10
|
-
<%= render :template => "rescues/_request_and_response" %>
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<h1>Routing Error</h1>
|
2
|
-
<p><pre><%=h @exception.message %></pre></p>
|
3
|
-
<% unless @exception.failures.empty? %>
|
4
|
-
<p>
|
5
|
-
<h2>Failure reasons:</h2>
|
6
|
-
<ol>
|
7
|
-
<% @exception.failures.each do |route, reason| %>
|
8
|
-
<li><code><%=h route.inspect.gsub('\\', '') %></code> failed because <%=h reason.downcase %></li>
|
9
|
-
<% end %>
|
10
|
-
</ol>
|
11
|
-
</p>
|
12
|
-
<% end %>
|
13
|
-
<p>
|
14
|
-
Try running <code>rake routes</code> for more information on available routes.
|
15
|
-
</p>
|
@@ -1,17 +0,0 @@
|
|
1
|
-
<h1>
|
2
|
-
<%=h @exception.original_exception.class.to_s %> in
|
3
|
-
<%=h @request.parameters["controller"].capitalize if @request.parameters["controller"]%>#<%=h @request.parameters["action"] %>
|
4
|
-
</h1>
|
5
|
-
|
6
|
-
<p>
|
7
|
-
Showing <i><%=h @exception.file_name %></i> where line <b>#<%=h @exception.line_number %></b> raised:
|
8
|
-
<pre><code><%=h @exception.message %></code></pre>
|
9
|
-
</p>
|
10
|
-
|
11
|
-
<p>Extracted source (around line <b>#<%=h @exception.line_number %></b>):
|
12
|
-
<pre><code><%=h @exception.source_extract %></code></pre></p>
|
13
|
-
|
14
|
-
<p><%=h @exception.sub_template_message %></p>
|
15
|
-
|
16
|
-
<%= render :template => "rescues/_trace" %>
|
17
|
-
<%= render :template => "rescues/_request_and_response" %>
|
@@ -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
|