actionpack 3.2.22.5 → 5.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +279 -603
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +13 -297
  5. data/lib/abstract_controller/asset_paths.rb +4 -2
  6. data/lib/abstract_controller/base.rb +82 -52
  7. data/lib/abstract_controller/caching/fragments.rb +166 -0
  8. data/lib/abstract_controller/caching.rb +66 -0
  9. data/lib/abstract_controller/callbacks.rb +117 -103
  10. data/lib/abstract_controller/collector.rb +18 -7
  11. data/lib/abstract_controller/error.rb +6 -0
  12. data/lib/abstract_controller/helpers.rb +65 -38
  13. data/lib/abstract_controller/logger.rb +3 -2
  14. data/lib/abstract_controller/railties/routes_helpers.rb +5 -3
  15. data/lib/abstract_controller/rendering.rb +77 -129
  16. data/lib/abstract_controller/translation.rb +21 -3
  17. data/lib/abstract_controller/url_for.rb +9 -7
  18. data/lib/abstract_controller.rb +12 -13
  19. data/lib/action_controller/api/api_rendering.rb +16 -0
  20. data/lib/action_controller/api.rb +149 -0
  21. data/lib/action_controller/base.rb +81 -40
  22. data/lib/action_controller/caching.rb +22 -62
  23. data/lib/action_controller/form_builder.rb +50 -0
  24. data/lib/action_controller/log_subscriber.rb +30 -18
  25. data/lib/action_controller/metal/basic_implicit_render.rb +13 -0
  26. data/lib/action_controller/metal/conditional_get.rb +190 -47
  27. data/lib/action_controller/metal/content_security_policy.rb +52 -0
  28. data/lib/action_controller/metal/cookies.rb +3 -3
  29. data/lib/action_controller/metal/data_streaming.rb +40 -65
  30. data/lib/action_controller/metal/etag_with_flash.rb +18 -0
  31. data/lib/action_controller/metal/etag_with_template_digest.rb +57 -0
  32. data/lib/action_controller/metal/exceptions.rb +19 -12
  33. data/lib/action_controller/metal/flash.rb +42 -9
  34. data/lib/action_controller/metal/force_ssl.rb +79 -19
  35. data/lib/action_controller/metal/head.rb +35 -10
  36. data/lib/action_controller/metal/helpers.rb +31 -21
  37. data/lib/action_controller/metal/http_authentication.rb +182 -134
  38. data/lib/action_controller/metal/implicit_render.rb +62 -8
  39. data/lib/action_controller/metal/instrumentation.rb +28 -26
  40. data/lib/action_controller/metal/live.rb +312 -0
  41. data/lib/action_controller/metal/mime_responds.rb +159 -163
  42. data/lib/action_controller/metal/parameter_encoding.rb +51 -0
  43. data/lib/action_controller/metal/params_wrapper.rb +146 -93
  44. data/lib/action_controller/metal/redirecting.rb +80 -56
  45. data/lib/action_controller/metal/renderers.rb +119 -47
  46. data/lib/action_controller/metal/rendering.rb +89 -32
  47. data/lib/action_controller/metal/request_forgery_protection.rb +373 -41
  48. data/lib/action_controller/metal/rescue.rb +9 -16
  49. data/lib/action_controller/metal/streaming.rb +39 -45
  50. data/lib/action_controller/metal/strong_parameters.rb +1086 -0
  51. data/lib/action_controller/metal/testing.rb +8 -29
  52. data/lib/action_controller/metal/url_for.rb +43 -32
  53. data/lib/action_controller/metal.rb +112 -106
  54. data/lib/action_controller/railtie.rb +56 -18
  55. data/lib/action_controller/railties/helpers.rb +24 -0
  56. data/lib/action_controller/renderer.rb +117 -0
  57. data/lib/action_controller/template_assertions.rb +11 -0
  58. data/lib/action_controller/test_case.rb +402 -347
  59. data/lib/action_controller.rb +31 -30
  60. data/lib/action_dispatch/http/cache.rb +133 -34
  61. data/lib/action_dispatch/http/content_security_policy.rb +272 -0
  62. data/lib/action_dispatch/http/filter_parameters.rb +40 -24
  63. data/lib/action_dispatch/http/filter_redirect.rb +37 -0
  64. data/lib/action_dispatch/http/headers.rb +117 -16
  65. data/lib/action_dispatch/http/mime_negotiation.rb +98 -33
  66. data/lib/action_dispatch/http/mime_type.rb +198 -146
  67. data/lib/action_dispatch/http/mime_types.rb +22 -7
  68. data/lib/action_dispatch/http/parameter_filter.rb +61 -49
  69. data/lib/action_dispatch/http/parameters.rb +94 -51
  70. data/lib/action_dispatch/http/rack_cache.rb +4 -3
  71. data/lib/action_dispatch/http/request.rb +262 -117
  72. data/lib/action_dispatch/http/response.rb +400 -86
  73. data/lib/action_dispatch/http/upload.rb +66 -29
  74. data/lib/action_dispatch/http/url.rb +232 -60
  75. data/lib/action_dispatch/journey/formatter.rb +189 -0
  76. data/lib/action_dispatch/journey/gtg/builder.rb +164 -0
  77. data/lib/action_dispatch/journey/gtg/simulator.rb +41 -0
  78. data/lib/action_dispatch/journey/gtg/transition_table.rb +158 -0
  79. data/lib/action_dispatch/journey/nfa/builder.rb +78 -0
  80. data/lib/action_dispatch/journey/nfa/dot.rb +36 -0
  81. data/lib/action_dispatch/journey/nfa/simulator.rb +49 -0
  82. data/lib/action_dispatch/journey/nfa/transition_table.rb +120 -0
  83. data/lib/action_dispatch/journey/nodes/node.rb +140 -0
  84. data/lib/action_dispatch/journey/parser.rb +199 -0
  85. data/lib/action_dispatch/journey/parser.y +50 -0
  86. data/lib/action_dispatch/journey/parser_extras.rb +31 -0
  87. data/lib/action_dispatch/journey/path/pattern.rb +199 -0
  88. data/lib/action_dispatch/journey/route.rb +203 -0
  89. data/lib/action_dispatch/journey/router/utils.rb +102 -0
  90. data/lib/action_dispatch/journey/router.rb +156 -0
  91. data/lib/action_dispatch/journey/routes.rb +82 -0
  92. data/lib/action_dispatch/journey/scanner.rb +64 -0
  93. data/lib/action_dispatch/journey/visitors.rb +268 -0
  94. data/lib/action_dispatch/journey/visualizer/fsm.css +30 -0
  95. data/lib/action_dispatch/journey/visualizer/fsm.js +134 -0
  96. data/lib/action_dispatch/journey/visualizer/index.html.erb +52 -0
  97. data/lib/action_dispatch/journey.rb +7 -0
  98. data/lib/action_dispatch/middleware/callbacks.rb +17 -13
  99. data/lib/action_dispatch/middleware/cookies.rb +494 -162
  100. data/lib/action_dispatch/middleware/debug_exceptions.rb +176 -53
  101. data/lib/action_dispatch/middleware/debug_locks.rb +124 -0
  102. data/lib/action_dispatch/middleware/exception_wrapper.rb +103 -38
  103. data/lib/action_dispatch/middleware/executor.rb +21 -0
  104. data/lib/action_dispatch/middleware/flash.rb +128 -91
  105. data/lib/action_dispatch/middleware/public_exceptions.rb +43 -16
  106. data/lib/action_dispatch/middleware/reloader.rb +6 -83
  107. data/lib/action_dispatch/middleware/remote_ip.rb +151 -49
  108. data/lib/action_dispatch/middleware/request_id.rb +19 -15
  109. data/lib/action_dispatch/middleware/session/abstract_store.rb +38 -34
  110. data/lib/action_dispatch/middleware/session/cache_store.rb +14 -9
  111. data/lib/action_dispatch/middleware/session/cookie_store.rb +94 -44
  112. data/lib/action_dispatch/middleware/session/mem_cache_store.rb +15 -4
  113. data/lib/action_dispatch/middleware/show_exceptions.rb +36 -61
  114. data/lib/action_dispatch/middleware/ssl.rb +150 -0
  115. data/lib/action_dispatch/middleware/stack.rb +33 -41
  116. data/lib/action_dispatch/middleware/static.rb +92 -48
  117. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +22 -0
  118. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb +23 -0
  119. data/lib/action_dispatch/middleware/templates/rescues/_source.html.erb +27 -0
  120. data/lib/action_dispatch/middleware/templates/rescues/_source.text.erb +8 -0
  121. data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +52 -0
  122. data/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +9 -0
  123. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +16 -0
  124. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
  125. data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.html.erb +21 -0
  126. data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.text.erb +13 -0
  127. data/lib/action_dispatch/middleware/templates/rescues/layout.erb +134 -5
  128. data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +11 -0
  129. data/lib/action_dispatch/middleware/templates/rescues/missing_template.text.erb +3 -0
  130. data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +32 -0
  131. data/lib/action_dispatch/middleware/templates/rescues/routing_error.text.erb +11 -0
  132. data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +20 -0
  133. data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +7 -0
  134. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +6 -0
  135. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.text.erb +3 -0
  136. data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +16 -0
  137. data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +200 -0
  138. data/lib/action_dispatch/railtie.rb +29 -8
  139. data/lib/action_dispatch/request/session.rb +234 -0
  140. data/lib/action_dispatch/request/utils.rb +78 -0
  141. data/lib/action_dispatch/routing/endpoint.rb +17 -0
  142. data/lib/action_dispatch/routing/inspector.rb +225 -0
  143. data/lib/action_dispatch/routing/mapper.rb +1329 -582
  144. data/lib/action_dispatch/routing/polymorphic_routes.rb +237 -94
  145. data/lib/action_dispatch/routing/redirection.rb +120 -50
  146. data/lib/action_dispatch/routing/route_set.rb +545 -322
  147. data/lib/action_dispatch/routing/routes_proxy.rb +37 -7
  148. data/lib/action_dispatch/routing/url_for.rb +103 -34
  149. data/lib/action_dispatch/routing.rb +66 -99
  150. data/lib/action_dispatch/system_test_case.rb +147 -0
  151. data/lib/action_dispatch/system_testing/browser.rb +49 -0
  152. data/lib/action_dispatch/system_testing/driver.rb +59 -0
  153. data/lib/action_dispatch/system_testing/server.rb +31 -0
  154. data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +96 -0
  155. data/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb +31 -0
  156. data/lib/action_dispatch/system_testing/test_helpers/undef_methods.rb +26 -0
  157. data/lib/action_dispatch/testing/assertion_response.rb +47 -0
  158. data/lib/action_dispatch/testing/assertions/response.rb +53 -42
  159. data/lib/action_dispatch/testing/assertions/routing.rb +79 -74
  160. data/lib/action_dispatch/testing/assertions.rb +15 -9
  161. data/lib/action_dispatch/testing/integration.rb +361 -207
  162. data/lib/action_dispatch/testing/request_encoder.rb +55 -0
  163. data/lib/action_dispatch/testing/test_process.rb +28 -19
  164. data/lib/action_dispatch/testing/test_request.rb +30 -33
  165. data/lib/action_dispatch/testing/test_response.rb +35 -11
  166. data/lib/action_dispatch.rb +42 -32
  167. data/lib/action_pack/gem_version.rb +17 -0
  168. data/lib/action_pack/version.rb +7 -7
  169. data/lib/action_pack.rb +4 -2
  170. metadata +116 -175
  171. data/lib/abstract_controller/layouts.rb +0 -423
  172. data/lib/abstract_controller/view_paths.rb +0 -96
  173. data/lib/action_controller/caching/actions.rb +0 -185
  174. data/lib/action_controller/caching/fragments.rb +0 -127
  175. data/lib/action_controller/caching/pages.rb +0 -187
  176. data/lib/action_controller/caching/sweeping.rb +0 -97
  177. data/lib/action_controller/deprecated/integration_test.rb +0 -2
  178. data/lib/action_controller/deprecated/performance_test.rb +0 -1
  179. data/lib/action_controller/deprecated.rb +0 -3
  180. data/lib/action_controller/metal/compatibility.rb +0 -65
  181. data/lib/action_controller/metal/hide_actions.rb +0 -41
  182. data/lib/action_controller/metal/rack_delegation.rb +0 -26
  183. data/lib/action_controller/metal/responder.rb +0 -286
  184. data/lib/action_controller/metal/session_management.rb +0 -14
  185. data/lib/action_controller/middleware.rb +0 -39
  186. data/lib/action_controller/railties/paths.rb +0 -25
  187. data/lib/action_controller/record_identifier.rb +0 -85
  188. data/lib/action_controller/vendor/html-scanner/html/document.rb +0 -68
  189. data/lib/action_controller/vendor/html-scanner/html/node.rb +0 -532
  190. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +0 -177
  191. data/lib/action_controller/vendor/html-scanner/html/selector.rb +0 -830
  192. data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +0 -107
  193. data/lib/action_controller/vendor/html-scanner/html/version.rb +0 -11
  194. data/lib/action_controller/vendor/html-scanner.rb +0 -20
  195. data/lib/action_dispatch/middleware/best_standards_support.rb +0 -30
  196. data/lib/action_dispatch/middleware/body_proxy.rb +0 -30
  197. data/lib/action_dispatch/middleware/head.rb +0 -18
  198. data/lib/action_dispatch/middleware/params_parser.rb +0 -75
  199. data/lib/action_dispatch/middleware/rescue.rb +0 -26
  200. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb +0 -31
  201. data/lib/action_dispatch/middleware/templates/rescues/_trace.erb +0 -26
  202. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +0 -10
  203. data/lib/action_dispatch/middleware/templates/rescues/missing_template.erb +0 -2
  204. data/lib/action_dispatch/middleware/templates/rescues/routing_error.erb +0 -15
  205. data/lib/action_dispatch/middleware/templates/rescues/template_error.erb +0 -17
  206. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.erb +0 -2
  207. data/lib/action_dispatch/testing/assertions/dom.rb +0 -37
  208. data/lib/action_dispatch/testing/assertions/selector.rb +0 -435
  209. data/lib/action_dispatch/testing/assertions/tag.rb +0 -138
  210. data/lib/action_dispatch/testing/performance_test.rb +0 -10
  211. data/lib/action_view/asset_paths.rb +0 -142
  212. data/lib/action_view/base.rb +0 -220
  213. data/lib/action_view/buffers.rb +0 -43
  214. data/lib/action_view/context.rb +0 -36
  215. data/lib/action_view/flows.rb +0 -79
  216. data/lib/action_view/helpers/active_model_helper.rb +0 -50
  217. data/lib/action_view/helpers/asset_paths.rb +0 -7
  218. data/lib/action_view/helpers/asset_tag_helper.rb +0 -457
  219. data/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb +0 -146
  220. data/lib/action_view/helpers/asset_tag_helpers/asset_paths.rb +0 -93
  221. data/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb +0 -193
  222. data/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb +0 -148
  223. data/lib/action_view/helpers/atom_feed_helper.rb +0 -200
  224. data/lib/action_view/helpers/cache_helper.rb +0 -64
  225. data/lib/action_view/helpers/capture_helper.rb +0 -203
  226. data/lib/action_view/helpers/controller_helper.rb +0 -25
  227. data/lib/action_view/helpers/csrf_helper.rb +0 -32
  228. data/lib/action_view/helpers/date_helper.rb +0 -1062
  229. data/lib/action_view/helpers/debug_helper.rb +0 -40
  230. data/lib/action_view/helpers/form_helper.rb +0 -1486
  231. data/lib/action_view/helpers/form_options_helper.rb +0 -658
  232. data/lib/action_view/helpers/form_tag_helper.rb +0 -685
  233. data/lib/action_view/helpers/javascript_helper.rb +0 -110
  234. data/lib/action_view/helpers/number_helper.rb +0 -622
  235. data/lib/action_view/helpers/output_safety_helper.rb +0 -38
  236. data/lib/action_view/helpers/record_tag_helper.rb +0 -111
  237. data/lib/action_view/helpers/rendering_helper.rb +0 -92
  238. data/lib/action_view/helpers/sanitize_helper.rb +0 -259
  239. data/lib/action_view/helpers/tag_helper.rb +0 -167
  240. data/lib/action_view/helpers/text_helper.rb +0 -426
  241. data/lib/action_view/helpers/translation_helper.rb +0 -91
  242. data/lib/action_view/helpers/url_helper.rb +0 -693
  243. data/lib/action_view/helpers.rb +0 -60
  244. data/lib/action_view/locale/en.yml +0 -160
  245. data/lib/action_view/log_subscriber.rb +0 -28
  246. data/lib/action_view/lookup_context.rb +0 -258
  247. data/lib/action_view/path_set.rb +0 -101
  248. data/lib/action_view/railtie.rb +0 -55
  249. data/lib/action_view/renderer/abstract_renderer.rb +0 -41
  250. data/lib/action_view/renderer/partial_renderer.rb +0 -415
  251. data/lib/action_view/renderer/renderer.rb +0 -61
  252. data/lib/action_view/renderer/streaming_template_renderer.rb +0 -106
  253. data/lib/action_view/renderer/template_renderer.rb +0 -95
  254. data/lib/action_view/template/error.rb +0 -128
  255. data/lib/action_view/template/handlers/builder.rb +0 -26
  256. data/lib/action_view/template/handlers/erb.rb +0 -125
  257. data/lib/action_view/template/handlers.rb +0 -50
  258. data/lib/action_view/template/resolver.rb +0 -298
  259. data/lib/action_view/template/text.rb +0 -30
  260. data/lib/action_view/template.rb +0 -337
  261. data/lib/action_view/test_case.rb +0 -246
  262. data/lib/action_view/testing/resolvers.rb +0 -49
  263. data/lib/action_view.rb +0 -84
  264. data/lib/sprockets/assets.rake +0 -99
  265. data/lib/sprockets/bootstrap.rb +0 -37
  266. data/lib/sprockets/compressors.rb +0 -83
  267. data/lib/sprockets/helpers/isolated_helper.rb +0 -13
  268. data/lib/sprockets/helpers/rails_helper.rb +0 -182
  269. data/lib/sprockets/helpers.rb +0 -6
  270. data/lib/sprockets/railtie.rb +0 -62
  271. 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,75 +0,0 @@
1
- require 'active_support/core_ext/hash/conversions'
2
- require 'action_dispatch/http/request'
3
- require 'active_support/core_ext/hash/indifferent_access'
4
-
5
- module ActionDispatch
6
- class ParamsParser
7
- DEFAULT_PARSERS = {
8
- Mime::XML => :xml_simple,
9
- Mime::JSON => :json
10
- }
11
-
12
- def initialize(app, parsers = {})
13
- @app, @parsers = app, DEFAULT_PARSERS.merge(parsers)
14
- end
15
-
16
- def call(env)
17
- if params = parse_formatted_parameters(env)
18
- env["action_dispatch.request.request_parameters"] = params
19
- end
20
-
21
- @app.call(env)
22
- end
23
-
24
- private
25
- def parse_formatted_parameters(env)
26
- request = Request.new(env)
27
-
28
- return false if request.content_length.zero?
29
-
30
- mime_type = content_type_from_legacy_post_data_format_header(env) ||
31
- request.content_mime_type
32
-
33
- strategy = @parsers[mime_type]
34
-
35
- return false unless strategy
36
-
37
- case strategy
38
- when Proc
39
- strategy.call(request.raw_post)
40
- when :xml_simple, :xml_node
41
- data = request.deep_munge(Hash.from_xml(request.body.read) || {})
42
- request.body.rewind if request.body.respond_to?(:rewind)
43
- data.with_indifferent_access
44
- when :yaml
45
- YAML.load(request.raw_post)
46
- when :json
47
- data = ActiveSupport::JSON.decode(request.body)
48
- request.body.rewind if request.body.respond_to?(:rewind)
49
- data = {:_json => data} unless data.is_a?(Hash)
50
- request.deep_munge(data).with_indifferent_access
51
- else
52
- false
53
- end
54
- rescue Exception => e # YAML, XML or Ruby code block errors
55
- logger(env).debug "Error occurred while parsing request parameters.\nContents:\n\n#{request.raw_post}"
56
-
57
- raise e
58
- end
59
-
60
- def content_type_from_legacy_post_data_format_header(env)
61
- if x_post_format = env['HTTP_X_POST_DATA_FORMAT']
62
- case x_post_format.to_s.downcase
63
- when 'yaml' then return Mime::YAML
64
- when 'xml' then return Mime::XML
65
- end
66
- end
67
-
68
- nil
69
- end
70
-
71
- def logger(env)
72
- env['action_dispatch.logger'] || Logger.new($stderr)
73
- end
74
- end
75
- 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,37 +0,0 @@
1
- require 'action_controller/vendor/html-scanner'
2
-
3
- module ActionDispatch
4
- module Assertions
5
- module DomAssertions
6
- # \Test two HTML strings for equivalency (e.g., identical up to reordering of attributes)
7
- #
8
- # ==== Examples
9
- #
10
- # # assert that the referenced method generates the appropriate HTML string
11
- # assert_dom_equal '<a href="http://www.example.com">Apples</a>', link_to("Apples", "http://www.example.com")
12
- #
13
- def assert_dom_equal(expected, actual, message = "")
14
- expected_dom = HTML::Document.new(expected).root
15
- actual_dom = HTML::Document.new(actual).root
16
- full_message = build_message(message, "<?> expected to be == to\n<?>.", expected_dom.to_s, actual_dom.to_s)
17
-
18
- assert_block(full_message) { expected_dom == actual_dom }
19
- end
20
-
21
- # The negated form of +assert_dom_equivalent+.
22
- #
23
- # ==== Examples
24
- #
25
- # # assert that the referenced method does not generate the specified HTML string
26
- # assert_dom_not_equal '<a href="http://www.example.com">Apples</a>', link_to("Oranges", "http://www.example.com")
27
- #
28
- def assert_dom_not_equal(expected, actual, message = "")
29
- expected_dom = HTML::Document.new(expected).root
30
- actual_dom = HTML::Document.new(actual).root
31
- full_message = build_message(message, "<?> expected to be != to\n<?>.", expected_dom.to_s, actual_dom.to_s)
32
-
33
- assert_block(full_message) { expected_dom != actual_dom }
34
- end
35
- end
36
- end
37
- end