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.

Files changed (244) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +412 -503
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +11 -294
  5. data/lib/abstract_controller/asset_paths.rb +2 -2
  6. data/lib/abstract_controller/base.rb +52 -18
  7. data/lib/abstract_controller/callbacks.rb +87 -89
  8. data/lib/abstract_controller/collector.rb +17 -3
  9. data/lib/abstract_controller/helpers.rb +41 -14
  10. data/lib/abstract_controller/logger.rb +1 -2
  11. data/lib/abstract_controller/railties/routes_helpers.rb +3 -3
  12. data/lib/abstract_controller/rendering.rb +65 -118
  13. data/lib/abstract_controller/translation.rb +16 -1
  14. data/lib/abstract_controller/url_for.rb +7 -7
  15. data/lib/abstract_controller.rb +2 -10
  16. data/lib/action_controller/base.rb +61 -28
  17. data/lib/action_controller/caching/fragments.rb +30 -54
  18. data/lib/action_controller/caching.rb +38 -35
  19. data/lib/action_controller/log_subscriber.rb +35 -18
  20. data/lib/action_controller/metal/conditional_get.rb +103 -34
  21. data/lib/action_controller/metal/data_streaming.rb +20 -26
  22. data/lib/action_controller/metal/etag_with_template_digest.rb +50 -0
  23. data/lib/action_controller/metal/exceptions.rb +19 -6
  24. data/lib/action_controller/metal/flash.rb +41 -9
  25. data/lib/action_controller/metal/force_ssl.rb +70 -12
  26. data/lib/action_controller/metal/head.rb +30 -7
  27. data/lib/action_controller/metal/helpers.rb +11 -11
  28. data/lib/action_controller/metal/hide_actions.rb +0 -1
  29. data/lib/action_controller/metal/http_authentication.rb +140 -94
  30. data/lib/action_controller/metal/implicit_render.rb +1 -1
  31. data/lib/action_controller/metal/instrumentation.rb +11 -7
  32. data/lib/action_controller/metal/live.rb +328 -0
  33. data/lib/action_controller/metal/mime_responds.rb +161 -152
  34. data/lib/action_controller/metal/params_wrapper.rb +126 -81
  35. data/lib/action_controller/metal/rack_delegation.rb +10 -4
  36. data/lib/action_controller/metal/redirecting.rb +44 -41
  37. data/lib/action_controller/metal/renderers.rb +48 -19
  38. data/lib/action_controller/metal/rendering.rb +46 -11
  39. data/lib/action_controller/metal/request_forgery_protection.rb +250 -29
  40. data/lib/action_controller/metal/streaming.rb +30 -38
  41. data/lib/action_controller/metal/strong_parameters.rb +669 -0
  42. data/lib/action_controller/metal/testing.rb +12 -18
  43. data/lib/action_controller/metal/url_for.rb +31 -29
  44. data/lib/action_controller/metal.rb +31 -40
  45. data/lib/action_controller/model_naming.rb +12 -0
  46. data/lib/action_controller/railtie.rb +38 -18
  47. data/lib/action_controller/railties/helpers.rb +22 -0
  48. data/lib/action_controller/test_case.rb +359 -173
  49. data/lib/action_controller.rb +9 -16
  50. data/lib/action_dispatch/http/cache.rb +64 -11
  51. data/lib/action_dispatch/http/filter_parameters.rb +20 -10
  52. data/lib/action_dispatch/http/filter_redirect.rb +38 -0
  53. data/lib/action_dispatch/http/headers.rb +85 -17
  54. data/lib/action_dispatch/http/mime_negotiation.rb +55 -5
  55. data/lib/action_dispatch/http/mime_type.rb +167 -114
  56. data/lib/action_dispatch/http/mime_types.rb +2 -1
  57. data/lib/action_dispatch/http/parameter_filter.rb +44 -46
  58. data/lib/action_dispatch/http/parameters.rb +30 -46
  59. data/lib/action_dispatch/http/rack_cache.rb +2 -3
  60. data/lib/action_dispatch/http/request.rb +108 -45
  61. data/lib/action_dispatch/http/response.rb +247 -48
  62. data/lib/action_dispatch/http/upload.rb +60 -29
  63. data/lib/action_dispatch/http/url.rb +135 -45
  64. data/lib/action_dispatch/journey/backwards.rb +5 -0
  65. data/lib/action_dispatch/journey/formatter.rb +166 -0
  66. data/lib/action_dispatch/journey/gtg/builder.rb +162 -0
  67. data/lib/action_dispatch/journey/gtg/simulator.rb +47 -0
  68. data/lib/action_dispatch/journey/gtg/transition_table.rb +157 -0
  69. data/lib/action_dispatch/journey/nfa/builder.rb +76 -0
  70. data/lib/action_dispatch/journey/nfa/dot.rb +36 -0
  71. data/lib/action_dispatch/journey/nfa/simulator.rb +47 -0
  72. data/lib/action_dispatch/journey/nfa/transition_table.rb +163 -0
  73. data/lib/action_dispatch/journey/nodes/node.rb +128 -0
  74. data/lib/action_dispatch/journey/parser.rb +198 -0
  75. data/lib/action_dispatch/journey/parser.y +49 -0
  76. data/lib/action_dispatch/journey/parser_extras.rb +23 -0
  77. data/lib/action_dispatch/journey/path/pattern.rb +193 -0
  78. data/lib/action_dispatch/journey/route.rb +125 -0
  79. data/lib/action_dispatch/journey/router/strexp.rb +27 -0
  80. data/lib/action_dispatch/journey/router/utils.rb +93 -0
  81. data/lib/action_dispatch/journey/router.rb +144 -0
  82. data/lib/action_dispatch/journey/routes.rb +80 -0
  83. data/lib/action_dispatch/journey/scanner.rb +61 -0
  84. data/lib/action_dispatch/journey/visitors.rb +221 -0
  85. data/lib/action_dispatch/journey/visualizer/fsm.css +30 -0
  86. data/lib/action_dispatch/journey/visualizer/fsm.js +134 -0
  87. data/lib/action_dispatch/journey/visualizer/index.html.erb +52 -0
  88. data/lib/action_dispatch/journey.rb +5 -0
  89. data/lib/action_dispatch/middleware/callbacks.rb +16 -11
  90. data/lib/action_dispatch/middleware/cookies.rb +346 -125
  91. data/lib/action_dispatch/middleware/debug_exceptions.rb +52 -24
  92. data/lib/action_dispatch/middleware/exception_wrapper.rb +75 -9
  93. data/lib/action_dispatch/middleware/flash.rb +85 -72
  94. data/lib/action_dispatch/middleware/params_parser.rb +16 -31
  95. data/lib/action_dispatch/middleware/public_exceptions.rb +39 -14
  96. data/lib/action_dispatch/middleware/reloader.rb +16 -7
  97. data/lib/action_dispatch/middleware/remote_ip.rb +132 -40
  98. data/lib/action_dispatch/middleware/request_id.rb +3 -7
  99. data/lib/action_dispatch/middleware/session/abstract_store.rb +22 -20
  100. data/lib/action_dispatch/middleware/session/cache_store.rb +3 -3
  101. data/lib/action_dispatch/middleware/session/cookie_store.rb +84 -29
  102. data/lib/action_dispatch/middleware/session/mem_cache_store.rb +8 -3
  103. data/lib/action_dispatch/middleware/show_exceptions.rb +15 -44
  104. data/lib/action_dispatch/middleware/ssl.rb +72 -0
  105. data/lib/action_dispatch/middleware/stack.rb +6 -1
  106. data/lib/action_dispatch/middleware/static.rb +80 -23
  107. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +34 -0
  108. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb +23 -0
  109. data/lib/action_dispatch/middleware/templates/rescues/_source.erb +27 -0
  110. data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +52 -0
  111. data/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +9 -0
  112. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +16 -0
  113. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
  114. data/lib/action_dispatch/middleware/templates/rescues/layout.erb +133 -5
  115. data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +11 -0
  116. data/lib/action_dispatch/middleware/templates/rescues/missing_template.text.erb +3 -0
  117. data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +32 -0
  118. data/lib/action_dispatch/middleware/templates/rescues/routing_error.text.erb +11 -0
  119. data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +20 -0
  120. data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +7 -0
  121. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +6 -0
  122. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.text.erb +3 -0
  123. data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +16 -0
  124. data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +200 -0
  125. data/lib/action_dispatch/railtie.rb +19 -6
  126. data/lib/action_dispatch/request/session.rb +193 -0
  127. data/lib/action_dispatch/request/utils.rb +35 -0
  128. data/lib/action_dispatch/routing/endpoint.rb +10 -0
  129. data/lib/action_dispatch/routing/inspector.rb +234 -0
  130. data/lib/action_dispatch/routing/mapper.rb +897 -436
  131. data/lib/action_dispatch/routing/polymorphic_routes.rb +213 -92
  132. data/lib/action_dispatch/routing/redirection.rb +97 -37
  133. data/lib/action_dispatch/routing/route_set.rb +432 -239
  134. data/lib/action_dispatch/routing/routes_proxy.rb +7 -4
  135. data/lib/action_dispatch/routing/url_for.rb +63 -34
  136. data/lib/action_dispatch/routing.rb +57 -89
  137. data/lib/action_dispatch/testing/assertions/dom.rb +2 -36
  138. data/lib/action_dispatch/testing/assertions/response.rb +24 -38
  139. data/lib/action_dispatch/testing/assertions/routing.rb +55 -54
  140. data/lib/action_dispatch/testing/assertions/selector.rb +2 -434
  141. data/lib/action_dispatch/testing/assertions/tag.rb +2 -137
  142. data/lib/action_dispatch/testing/assertions.rb +11 -7
  143. data/lib/action_dispatch/testing/integration.rb +88 -72
  144. data/lib/action_dispatch/testing/test_process.rb +9 -6
  145. data/lib/action_dispatch/testing/test_request.rb +13 -9
  146. data/lib/action_dispatch/testing/test_response.rb +1 -5
  147. data/lib/action_dispatch.rb +24 -21
  148. data/lib/action_pack/gem_version.rb +15 -0
  149. data/lib/action_pack/version.rb +5 -7
  150. data/lib/action_pack.rb +1 -1
  151. metadata +181 -292
  152. data/lib/abstract_controller/layouts.rb +0 -423
  153. data/lib/abstract_controller/view_paths.rb +0 -96
  154. data/lib/action_controller/caching/actions.rb +0 -185
  155. data/lib/action_controller/caching/pages.rb +0 -187
  156. data/lib/action_controller/caching/sweeping.rb +0 -97
  157. data/lib/action_controller/deprecated/integration_test.rb +0 -2
  158. data/lib/action_controller/deprecated/performance_test.rb +0 -1
  159. data/lib/action_controller/deprecated.rb +0 -3
  160. data/lib/action_controller/metal/compatibility.rb +0 -65
  161. data/lib/action_controller/metal/responder.rb +0 -286
  162. data/lib/action_controller/metal/session_management.rb +0 -14
  163. data/lib/action_controller/railties/paths.rb +0 -25
  164. data/lib/action_controller/record_identifier.rb +0 -85
  165. data/lib/action_controller/vendor/html-scanner/html/document.rb +0 -68
  166. data/lib/action_controller/vendor/html-scanner/html/node.rb +0 -532
  167. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +0 -177
  168. data/lib/action_controller/vendor/html-scanner/html/selector.rb +0 -830
  169. data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +0 -107
  170. data/lib/action_controller/vendor/html-scanner/html/version.rb +0 -11
  171. data/lib/action_controller/vendor/html-scanner.rb +0 -20
  172. data/lib/action_dispatch/middleware/best_standards_support.rb +0 -30
  173. data/lib/action_dispatch/middleware/body_proxy.rb +0 -30
  174. data/lib/action_dispatch/middleware/head.rb +0 -18
  175. data/lib/action_dispatch/middleware/rescue.rb +0 -26
  176. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb +0 -31
  177. data/lib/action_dispatch/middleware/templates/rescues/_trace.erb +0 -26
  178. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +0 -10
  179. data/lib/action_dispatch/middleware/templates/rescues/missing_template.erb +0 -2
  180. data/lib/action_dispatch/middleware/templates/rescues/routing_error.erb +0 -15
  181. data/lib/action_dispatch/middleware/templates/rescues/template_error.erb +0 -17
  182. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.erb +0 -2
  183. data/lib/action_dispatch/testing/performance_test.rb +0 -10
  184. data/lib/action_view/asset_paths.rb +0 -142
  185. data/lib/action_view/base.rb +0 -220
  186. data/lib/action_view/buffers.rb +0 -43
  187. data/lib/action_view/context.rb +0 -36
  188. data/lib/action_view/flows.rb +0 -79
  189. data/lib/action_view/helpers/active_model_helper.rb +0 -50
  190. data/lib/action_view/helpers/asset_paths.rb +0 -7
  191. data/lib/action_view/helpers/asset_tag_helper.rb +0 -457
  192. data/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb +0 -146
  193. data/lib/action_view/helpers/asset_tag_helpers/asset_paths.rb +0 -93
  194. data/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb +0 -193
  195. data/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb +0 -148
  196. data/lib/action_view/helpers/atom_feed_helper.rb +0 -200
  197. data/lib/action_view/helpers/cache_helper.rb +0 -64
  198. data/lib/action_view/helpers/capture_helper.rb +0 -203
  199. data/lib/action_view/helpers/controller_helper.rb +0 -25
  200. data/lib/action_view/helpers/csrf_helper.rb +0 -32
  201. data/lib/action_view/helpers/date_helper.rb +0 -1062
  202. data/lib/action_view/helpers/debug_helper.rb +0 -40
  203. data/lib/action_view/helpers/form_helper.rb +0 -1486
  204. data/lib/action_view/helpers/form_options_helper.rb +0 -658
  205. data/lib/action_view/helpers/form_tag_helper.rb +0 -685
  206. data/lib/action_view/helpers/javascript_helper.rb +0 -110
  207. data/lib/action_view/helpers/number_helper.rb +0 -622
  208. data/lib/action_view/helpers/output_safety_helper.rb +0 -38
  209. data/lib/action_view/helpers/record_tag_helper.rb +0 -111
  210. data/lib/action_view/helpers/rendering_helper.rb +0 -90
  211. data/lib/action_view/helpers/sanitize_helper.rb +0 -259
  212. data/lib/action_view/helpers/tag_helper.rb +0 -160
  213. data/lib/action_view/helpers/text_helper.rb +0 -426
  214. data/lib/action_view/helpers/translation_helper.rb +0 -91
  215. data/lib/action_view/helpers/url_helper.rb +0 -693
  216. data/lib/action_view/helpers.rb +0 -60
  217. data/lib/action_view/locale/en.yml +0 -160
  218. data/lib/action_view/log_subscriber.rb +0 -28
  219. data/lib/action_view/lookup_context.rb +0 -254
  220. data/lib/action_view/path_set.rb +0 -89
  221. data/lib/action_view/railtie.rb +0 -55
  222. data/lib/action_view/renderer/abstract_renderer.rb +0 -41
  223. data/lib/action_view/renderer/partial_renderer.rb +0 -415
  224. data/lib/action_view/renderer/renderer.rb +0 -54
  225. data/lib/action_view/renderer/streaming_template_renderer.rb +0 -106
  226. data/lib/action_view/renderer/template_renderer.rb +0 -94
  227. data/lib/action_view/template/error.rb +0 -128
  228. data/lib/action_view/template/handlers/builder.rb +0 -26
  229. data/lib/action_view/template/handlers/erb.rb +0 -125
  230. data/lib/action_view/template/handlers.rb +0 -50
  231. data/lib/action_view/template/resolver.rb +0 -272
  232. data/lib/action_view/template/text.rb +0 -30
  233. data/lib/action_view/template.rb +0 -337
  234. data/lib/action_view/test_case.rb +0 -245
  235. data/lib/action_view/testing/resolvers.rb +0 -50
  236. data/lib/action_view.rb +0 -84
  237. data/lib/sprockets/assets.rake +0 -99
  238. data/lib/sprockets/bootstrap.rb +0 -37
  239. data/lib/sprockets/compressors.rb +0 -83
  240. data/lib/sprockets/helpers/isolated_helper.rb +0 -13
  241. data/lib/sprockets/helpers/rails_helper.rb +0 -182
  242. data/lib/sprockets/helpers.rb +0 -6
  243. data/lib/sprockets/railtie.rb +0 -62
  244. 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,11 +0,0 @@
1
- module HTML #:nodoc:
2
- module Version #:nodoc:
3
-
4
- MAJOR = 0
5
- MINOR = 5
6
- TINY = 3
7
-
8
- STRING = [ MAJOR, MINOR, TINY ].join(".")
9
-
10
- end
11
- 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,2 +0,0 @@
1
- <h1>Template is missing</h1>
2
- <p><%=h @exception.message %></p>
@@ -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,2 +0,0 @@
1
- <h1>Unknown action</h1>
2
- <p><%=h @exception.message %></p>
@@ -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