actionpack 4.1.7 → 4.2.11

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 (112) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +404 -451
  3. data/README.rdoc +7 -2
  4. data/lib/abstract_controller/base.rb +16 -6
  5. data/lib/abstract_controller/callbacks.rb +28 -51
  6. data/lib/abstract_controller/helpers.rb +11 -4
  7. data/lib/abstract_controller/railties/routes_helpers.rb +3 -3
  8. data/lib/abstract_controller/rendering.rb +7 -1
  9. data/lib/abstract_controller/url_for.rb +1 -1
  10. data/lib/action_controller/base.rb +3 -2
  11. data/lib/action_controller/caching/fragments.rb +7 -1
  12. data/lib/action_controller/caching.rb +1 -1
  13. data/lib/action_controller/log_subscriber.rb +26 -26
  14. data/lib/action_controller/metal/conditional_get.rb +37 -12
  15. data/lib/action_controller/metal/etag_with_template_digest.rb +50 -0
  16. data/lib/action_controller/metal/exceptions.rb +1 -1
  17. data/lib/action_controller/metal/force_ssl.rb +1 -1
  18. data/lib/action_controller/metal/head.rb +7 -3
  19. data/lib/action_controller/metal/http_authentication.rb +20 -10
  20. data/lib/action_controller/metal/instrumentation.rb +8 -5
  21. data/lib/action_controller/metal/live.rb +57 -6
  22. data/lib/action_controller/metal/mime_responds.rb +25 -246
  23. data/lib/action_controller/metal/params_wrapper.rb +5 -5
  24. data/lib/action_controller/metal/rack_delegation.rb +1 -1
  25. data/lib/action_controller/metal/redirecting.rb +14 -8
  26. data/lib/action_controller/metal/renderers.rb +29 -11
  27. data/lib/action_controller/metal/rendering.rb +2 -6
  28. data/lib/action_controller/metal/request_forgery_protection.rb +78 -7
  29. data/lib/action_controller/metal/streaming.rb +1 -1
  30. data/lib/action_controller/metal/strong_parameters.rb +129 -14
  31. data/lib/action_controller/metal/url_for.rb +11 -12
  32. data/lib/action_controller/metal.rb +12 -11
  33. data/lib/action_controller/model_naming.rb +1 -1
  34. data/lib/action_controller/railtie.rb +4 -0
  35. data/lib/action_controller/test_case.rb +119 -75
  36. data/lib/action_controller.rb +1 -1
  37. data/lib/action_dispatch/http/cache.rb +5 -4
  38. data/lib/action_dispatch/http/filter_parameters.rb +2 -2
  39. data/lib/action_dispatch/http/headers.rb +43 -9
  40. data/lib/action_dispatch/http/mime_negotiation.rb +10 -3
  41. data/lib/action_dispatch/http/mime_type.rb +18 -4
  42. data/lib/action_dispatch/http/parameter_filter.rb +1 -1
  43. data/lib/action_dispatch/http/parameters.rb +11 -26
  44. data/lib/action_dispatch/http/request.rb +37 -11
  45. data/lib/action_dispatch/http/response.rb +74 -23
  46. data/lib/action_dispatch/http/upload.rb +9 -8
  47. data/lib/action_dispatch/http/url.rb +89 -70
  48. data/lib/action_dispatch/journey/formatter.rb +34 -18
  49. data/lib/action_dispatch/journey/gtg/builder.rb +3 -3
  50. data/lib/action_dispatch/journey/gtg/simulator.rb +10 -7
  51. data/lib/action_dispatch/journey/gtg/transition_table.rb +20 -28
  52. data/lib/action_dispatch/journey/nfa/dot.rb +2 -2
  53. data/lib/action_dispatch/journey/nfa/simulator.rb +1 -1
  54. data/lib/action_dispatch/journey/nfa/transition_table.rb +5 -5
  55. data/lib/action_dispatch/journey/nodes/node.rb +4 -0
  56. data/lib/action_dispatch/journey/parser.rb +52 -60
  57. data/lib/action_dispatch/journey/parser.y +11 -10
  58. data/lib/action_dispatch/journey/path/pattern.rb +16 -19
  59. data/lib/action_dispatch/journey/route.rb +4 -19
  60. data/lib/action_dispatch/journey/router/strexp.rb +9 -6
  61. data/lib/action_dispatch/journey/router/utils.rb +1 -1
  62. data/lib/action_dispatch/journey/router.rb +53 -77
  63. data/lib/action_dispatch/journey/routes.rb +4 -0
  64. data/lib/action_dispatch/journey/scanner.rb +5 -5
  65. data/lib/action_dispatch/journey/visitors.rb +81 -92
  66. data/lib/action_dispatch/journey/visualizer/fsm.css +0 -4
  67. data/lib/action_dispatch/journey/visualizer/index.html.erb +2 -2
  68. data/lib/action_dispatch/middleware/callbacks.rb +1 -1
  69. data/lib/action_dispatch/middleware/cookies.rb +34 -34
  70. data/lib/action_dispatch/middleware/debug_exceptions.rb +15 -4
  71. data/lib/action_dispatch/middleware/exception_wrapper.rb +50 -18
  72. data/lib/action_dispatch/middleware/flash.rb +13 -7
  73. data/lib/action_dispatch/middleware/params_parser.rb +1 -1
  74. data/lib/action_dispatch/middleware/public_exceptions.rb +12 -3
  75. data/lib/action_dispatch/middleware/remote_ip.rb +40 -54
  76. data/lib/action_dispatch/middleware/request_id.rb +1 -1
  77. data/lib/action_dispatch/middleware/session/cookie_store.rb +1 -1
  78. data/lib/action_dispatch/middleware/show_exceptions.rb +1 -0
  79. data/lib/action_dispatch/middleware/ssl.rb +1 -1
  80. data/lib/action_dispatch/middleware/static.rb +75 -39
  81. data/lib/action_dispatch/middleware/templates/rescues/_source.erb +21 -19
  82. data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +37 -9
  83. data/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +2 -8
  84. data/lib/action_dispatch/middleware/templates/rescues/{diagnostics.erb → diagnostics.html.erb} +0 -0
  85. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
  86. data/lib/action_dispatch/middleware/templates/rescues/layout.erb +6 -0
  87. data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +4 -0
  88. data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +2 -0
  89. data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +1 -24
  90. data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +0 -1
  91. data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +120 -64
  92. data/lib/action_dispatch/railtie.rb +2 -0
  93. data/lib/action_dispatch/routing/endpoint.rb +10 -0
  94. data/lib/action_dispatch/routing/inspector.rb +5 -12
  95. data/lib/action_dispatch/routing/mapper.rb +414 -283
  96. data/lib/action_dispatch/routing/polymorphic_routes.rb +191 -79
  97. data/lib/action_dispatch/routing/redirection.rb +10 -12
  98. data/lib/action_dispatch/routing/route_set.rb +300 -173
  99. data/lib/action_dispatch/routing/routes_proxy.rb +5 -4
  100. data/lib/action_dispatch/routing/url_for.rb +17 -5
  101. data/lib/action_dispatch/testing/assertions/dom.rb +2 -26
  102. data/lib/action_dispatch/testing/assertions/response.rb +2 -7
  103. data/lib/action_dispatch/testing/assertions/routing.rb +22 -22
  104. data/lib/action_dispatch/testing/assertions/selector.rb +2 -429
  105. data/lib/action_dispatch/testing/assertions/tag.rb +2 -134
  106. data/lib/action_dispatch/testing/assertions.rb +11 -7
  107. data/lib/action_dispatch/testing/integration.rb +28 -20
  108. data/lib/action_dispatch/testing/test_request.rb +1 -1
  109. data/lib/action_dispatch/testing/test_response.rb +1 -5
  110. data/lib/action_pack/gem_version.rb +3 -3
  111. metadata +55 -13
  112. data/lib/action_controller/metal/responder.rb +0 -297
@@ -1,135 +1,3 @@
1
- require 'action_view/vendor/html-scanner'
1
+ require 'active_support/deprecation'
2
2
 
3
- module ActionDispatch
4
- module Assertions
5
- # Pair of assertions to testing elements in the HTML output of the response.
6
- module TagAssertions
7
- # Asserts that there is a tag/node/element in the body of the response
8
- # that meets all of the given conditions. The +conditions+ parameter must
9
- # be a hash of any of the following keys (all are optional):
10
- #
11
- # * <tt>:tag</tt>: the node type must match the corresponding value
12
- # * <tt>:attributes</tt>: a hash. The node's attributes must match the
13
- # corresponding values in the hash.
14
- # * <tt>:parent</tt>: a hash. The node's parent must match the
15
- # corresponding hash.
16
- # * <tt>:child</tt>: a hash. At least one of the node's immediate children
17
- # must meet the criteria described by the hash.
18
- # * <tt>:ancestor</tt>: a hash. At least one of the node's ancestors must
19
- # meet the criteria described by the hash.
20
- # * <tt>:descendant</tt>: a hash. At least one of the node's descendants
21
- # must meet the criteria described by the hash.
22
- # * <tt>:sibling</tt>: a hash. At least one of the node's siblings must
23
- # meet the criteria described by the hash.
24
- # * <tt>:after</tt>: a hash. The node must be after any sibling meeting
25
- # the criteria described by the hash, and at least one sibling must match.
26
- # * <tt>:before</tt>: a hash. The node must be before any sibling meeting
27
- # the criteria described by the hash, and at least one sibling must match.
28
- # * <tt>:children</tt>: a hash, for counting children of a node. Accepts
29
- # the keys:
30
- # * <tt>:count</tt>: either a number or a range which must equal (or
31
- # include) the number of children that match.
32
- # * <tt>:less_than</tt>: the number of matching children must be less
33
- # than this number.
34
- # * <tt>:greater_than</tt>: the number of matching children must be
35
- # greater than this number.
36
- # * <tt>:only</tt>: another hash consisting of the keys to use
37
- # to match on the children, and only matching children will be
38
- # counted.
39
- # * <tt>:content</tt>: the textual content of the node must match the
40
- # given value. This will not match HTML tags in the body of a
41
- # tag--only text.
42
- #
43
- # Conditions are matched using the following algorithm:
44
- #
45
- # * if the condition is a string, it must be a substring of the value.
46
- # * if the condition is a regexp, it must match the value.
47
- # * if the condition is a number, the value must match number.to_s.
48
- # * if the condition is +true+, the value must not be +nil+.
49
- # * if the condition is +false+ or +nil+, the value must be +nil+.
50
- #
51
- # # Assert that there is a "span" tag
52
- # assert_tag tag: "span"
53
- #
54
- # # Assert that there is a "span" tag with id="x"
55
- # assert_tag tag: "span", attributes: { id: "x" }
56
- #
57
- # # Assert that there is a "span" tag using the short-hand
58
- # assert_tag :span
59
- #
60
- # # Assert that there is a "span" tag with id="x" using the short-hand
61
- # assert_tag :span, attributes: { id: "x" }
62
- #
63
- # # Assert that there is a "span" inside of a "div"
64
- # assert_tag tag: "span", parent: { tag: "div" }
65
- #
66
- # # Assert that there is a "span" somewhere inside a table
67
- # assert_tag tag: "span", ancestor: { tag: "table" }
68
- #
69
- # # Assert that there is a "span" with at least one "em" child
70
- # assert_tag tag: "span", child: { tag: "em" }
71
- #
72
- # # Assert that there is a "span" containing a (possibly nested)
73
- # # "strong" tag.
74
- # assert_tag tag: "span", descendant: { tag: "strong" }
75
- #
76
- # # Assert that there is a "span" containing between 2 and 4 "em" tags
77
- # # as immediate children
78
- # assert_tag tag: "span",
79
- # children: { count: 2..4, only: { tag: "em" } }
80
- #
81
- # # Get funky: assert that there is a "div", with an "ul" ancestor
82
- # # and an "li" parent (with "class" = "enum"), and containing a
83
- # # "span" descendant that contains text matching /hello world/
84
- # assert_tag tag: "div",
85
- # ancestor: { tag: "ul" },
86
- # parent: { tag: "li",
87
- # attributes: { class: "enum" } },
88
- # descendant: { tag: "span",
89
- # child: /hello world/ }
90
- #
91
- # <b>Please note</b>: +assert_tag+ and +assert_no_tag+ only work
92
- # with well-formed XHTML. They recognize a few tags as implicitly self-closing
93
- # (like br and hr and such) but will not work correctly with tags
94
- # that allow optional closing tags (p, li, td). <em>You must explicitly
95
- # close all of your tags to use these assertions.</em>
96
- def assert_tag(*opts)
97
- opts = opts.size > 1 ? opts.last.merge({ :tag => opts.first.to_s }) : opts.first
98
- tag = find_tag(opts)
99
- assert tag, "expected tag, but no tag found matching #{opts.inspect} in:\n#{@response.body.inspect}"
100
- end
101
-
102
- # Identical to +assert_tag+, but asserts that a matching tag does _not_
103
- # exist. (See +assert_tag+ for a full discussion of the syntax.)
104
- #
105
- # # Assert that there is not a "div" containing a "p"
106
- # assert_no_tag tag: "div", descendant: { tag: "p" }
107
- #
108
- # # Assert that an unordered list is empty
109
- # assert_no_tag tag: "ul", descendant: { tag: "li" }
110
- #
111
- # # Assert that there is not a "p" tag with between 1 to 3 "img" tags
112
- # # as immediate children
113
- # assert_no_tag tag: "p",
114
- # children: { count: 1..3, only: { tag: "img" } }
115
- def assert_no_tag(*opts)
116
- opts = opts.size > 1 ? opts.last.merge({ :tag => opts.first.to_s }) : opts.first
117
- tag = find_tag(opts)
118
- assert !tag, "expected no tag, but found tag matching #{opts.inspect} in:\n#{@response.body.inspect}"
119
- end
120
-
121
- def find_tag(conditions)
122
- html_document.find(conditions)
123
- end
124
-
125
- def find_all_tag(conditions)
126
- html_document.find_all(conditions)
127
- end
128
-
129
- def html_document
130
- xml = @response.content_type =~ /xml$/
131
- @html_document ||= HTML::Document.new(@response.body, false, xml)
132
- end
133
- end
134
- end
135
- end
3
+ ActiveSupport::Deprecation.warn('`ActionDispatch::Assertions::TagAssertions` has been extracted to the rails-dom-testing gem.')
@@ -1,18 +1,22 @@
1
+ require 'rails-dom-testing'
2
+
1
3
  module ActionDispatch
2
4
  module Assertions
3
- autoload :DomAssertions, 'action_dispatch/testing/assertions/dom'
4
5
  autoload :ResponseAssertions, 'action_dispatch/testing/assertions/response'
5
6
  autoload :RoutingAssertions, 'action_dispatch/testing/assertions/routing'
6
- autoload :SelectorAssertions, 'action_dispatch/testing/assertions/selector'
7
- autoload :TagAssertions, 'action_dispatch/testing/assertions/tag'
8
7
 
9
8
  extend ActiveSupport::Concern
10
9
 
11
- include DomAssertions
12
10
  include ResponseAssertions
13
11
  include RoutingAssertions
14
- include SelectorAssertions
15
- include TagAssertions
12
+ include Rails::Dom::Testing::Assertions
13
+
14
+ def html_document
15
+ @html_document ||= if @response.content_type.to_s =~ /xml$/
16
+ Nokogiri::XML::Document.parse(@response.body)
17
+ else
18
+ Nokogiri::HTML::Document.parse(@response.body)
19
+ end
20
+ end
16
21
  end
17
22
  end
18
-
@@ -189,8 +189,8 @@ module ActionDispatch
189
189
  # This makes app.url_for and app.foo_path available in the console
190
190
  if app.respond_to?(:routes)
191
191
  singleton_class.class_eval do
192
- include app.routes.url_helpers if app.routes.respond_to?(:url_helpers)
193
- include app.routes.mounted_helpers if app.routes.respond_to?(:mounted_helpers)
192
+ include app.routes.url_helpers
193
+ include app.routes.mounted_helpers
194
194
  end
195
195
  end
196
196
 
@@ -201,7 +201,7 @@ module ActionDispatch
201
201
  @url_options ||= default_url_options.dup.tap do |url_options|
202
202
  url_options.reverse_merge!(controller.url_options) if controller
203
203
 
204
- if @app.respond_to?(:routes) && @app.routes.respond_to?(:default_url_options)
204
+ if @app.respond_to?(:routes)
205
205
  url_options.reverse_merge!(@app.routes.default_url_options)
206
206
  end
207
207
 
@@ -270,12 +270,6 @@ module ActionDispatch
270
270
  path = location.query ? "#{location.path}?#{location.query}" : location.path
271
271
  end
272
272
 
273
- unless ActionController::Base < ActionController::Testing
274
- ActionController::Base.class_eval do
275
- include ActionController::Testing
276
- end
277
- end
278
-
279
273
  hostname, port = host.split(':')
280
274
 
281
275
  env = {
@@ -300,25 +294,24 @@ module ActionDispatch
300
294
 
301
295
  # NOTE: rack-test v0.5 doesn't build a default uri correctly
302
296
  # Make sure requested path is always a full uri
303
- uri = URI.parse('/')
304
- uri.scheme ||= env['rack.url_scheme']
305
- uri.host ||= env['SERVER_NAME']
306
- uri.port ||= env['SERVER_PORT'].try(:to_i)
307
- uri += path
308
-
309
- session.request(uri.to_s, env)
297
+ session.request(build_full_uri(path, env), env)
310
298
 
311
299
  @request_count += 1
312
300
  @request = ActionDispatch::Request.new(session.last_request.env)
313
301
  response = _mock_session.last_response
314
- @response = ActionDispatch::TestResponse.new(response.status, response.headers, response.body)
302
+ @response = ActionDispatch::TestResponse.from_response(response)
315
303
  @html_document = nil
304
+ @html_scanner_document = nil
316
305
  @url_options = nil
317
306
 
318
307
  @controller = session.last_request.env['action_controller.instance']
319
308
 
320
309
  return response.status
321
310
  end
311
+
312
+ def build_full_uri(path, env)
313
+ "#{env['rack.url_scheme']}://#{env['SERVER_NAME']}:#{env['SERVER_PORT']}#{path}"
314
+ end
322
315
  end
323
316
 
324
317
  module Runner
@@ -334,12 +327,22 @@ module ActionDispatch
334
327
  @integration_session = Integration::Session.new(app)
335
328
  end
336
329
 
330
+ def remove! # :nodoc:
331
+ @integration_session = nil
332
+ end
333
+
337
334
  %w(get post patch put head delete cookies assigns
338
335
  xml_http_request xhr get_via_redirect post_via_redirect).each do |method|
339
336
  define_method(method) do |*args|
340
337
  reset! unless integration_session
341
- # reset the html_document variable, but only for new get/post calls
342
- @html_document = nil unless method == 'cookies' || method == 'assigns'
338
+
339
+ # reset the html_document variable, except for cookies/assigns calls
340
+ unless method == 'cookies' || method == 'assigns'
341
+ @html_document = nil
342
+ @html_scanner_document = nil
343
+ reset_template_assertion
344
+ end
345
+
343
346
  integration_session.__send__(method, *args).tap do
344
347
  copy_session_variables!
345
348
  end
@@ -356,8 +359,9 @@ module ActionDispatch
356
359
  # By default, a single session is automatically created for you, but you
357
360
  # can use this method to open multiple sessions that ought to be tested
358
361
  # simultaneously.
359
- def open_session(app = nil)
362
+ def open_session
360
363
  dup.tap do |session|
364
+ session.reset!
361
365
  yield session if block_given?
362
366
  end
363
367
  end
@@ -502,5 +506,9 @@ module ActionDispatch
502
506
  reset! unless integration_session
503
507
  integration_session.url_options
504
508
  end
509
+
510
+ def document_root_element
511
+ html_document.root
512
+ end
505
513
  end
506
514
  end
@@ -39,7 +39,7 @@ module ActionDispatch
39
39
  end
40
40
 
41
41
  def action=(action_name)
42
- path_parameters["action"] = action_name.to_s
42
+ path_parameters[:action] = action_name.to_s
43
43
  end
44
44
 
45
45
  def if_modified_since=(last_modified)
@@ -7,11 +7,7 @@ module ActionDispatch
7
7
  # See Response for more information on controller response objects.
8
8
  class TestResponse < Response
9
9
  def self.from_response(response)
10
- new.tap do |resp|
11
- resp.status = response.status
12
- resp.headers = response.headers
13
- resp.body = response.body
14
- end
10
+ new response.status, response.headers, response.body, default_headers: nil
15
11
  end
16
12
 
17
13
  # Was the response successful?
@@ -1,13 +1,13 @@
1
1
  module ActionPack
2
- # Returns the version of the currently loaded ActionPack as a <tt>Gem::Version</tt>
2
+ # Returns the version of the currently loaded Action Pack as a <tt>Gem::Version</tt>
3
3
  def self.gem_version
4
4
  Gem::Version.new VERSION::STRING
5
5
  end
6
6
 
7
7
  module VERSION
8
8
  MAJOR = 4
9
- MINOR = 1
10
- TINY = 7
9
+ MINOR = 2
10
+ TINY = 11
11
11
  PRE = nil
12
12
 
13
13
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.7
4
+ version: 4.2.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-29 00:00:00.000000000 Z
11
+ date: 2018-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 4.1.7
19
+ version: 4.2.11
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 4.1.7
26
+ version: 4.2.11
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.5.2
33
+ version: '1.6'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.5.2
40
+ version: '1.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rack-test
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,34 +52,74 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.6.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: rails-html-sanitizer
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 1.0.2
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '1.0'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.0.2
75
+ - !ruby/object:Gem::Dependency
76
+ name: rails-dom-testing
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.0'
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 1.0.5
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.0'
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 1.0.5
55
95
  - !ruby/object:Gem::Dependency
56
96
  name: actionview
57
97
  requirement: !ruby/object:Gem::Requirement
58
98
  requirements:
59
99
  - - '='
60
100
  - !ruby/object:Gem::Version
61
- version: 4.1.7
101
+ version: 4.2.11
62
102
  type: :runtime
63
103
  prerelease: false
64
104
  version_requirements: !ruby/object:Gem::Requirement
65
105
  requirements:
66
106
  - - '='
67
107
  - !ruby/object:Gem::Version
68
- version: 4.1.7
108
+ version: 4.2.11
69
109
  - !ruby/object:Gem::Dependency
70
110
  name: activemodel
71
111
  requirement: !ruby/object:Gem::Requirement
72
112
  requirements:
73
113
  - - '='
74
114
  - !ruby/object:Gem::Version
75
- version: 4.1.7
115
+ version: 4.2.11
76
116
  type: :development
77
117
  prerelease: false
78
118
  version_requirements: !ruby/object:Gem::Requirement
79
119
  requirements:
80
120
  - - '='
81
121
  - !ruby/object:Gem::Version
82
- version: 4.1.7
122
+ version: 4.2.11
83
123
  description: Web apps on Rails. Simple, battle-tested conventions for building and
84
124
  testing MVC web applications. Works with any Rack-compatible server.
85
125
  email: david@loudthinking.com
@@ -110,6 +150,7 @@ files:
110
150
  - lib/action_controller/metal/conditional_get.rb
111
151
  - lib/action_controller/metal/cookies.rb
112
152
  - lib/action_controller/metal/data_streaming.rb
153
+ - lib/action_controller/metal/etag_with_template_digest.rb
113
154
  - lib/action_controller/metal/exceptions.rb
114
155
  - lib/action_controller/metal/flash.rb
115
156
  - lib/action_controller/metal/force_ssl.rb
@@ -128,7 +169,6 @@ files:
128
169
  - lib/action_controller/metal/rendering.rb
129
170
  - lib/action_controller/metal/request_forgery_protection.rb
130
171
  - lib/action_controller/metal/rescue.rb
131
- - lib/action_controller/metal/responder.rb
132
172
  - lib/action_controller/metal/streaming.rb
133
173
  - lib/action_controller/metal/strong_parameters.rb
134
174
  - lib/action_controller/metal/testing.rb
@@ -201,7 +241,8 @@ files:
201
241
  - lib/action_dispatch/middleware/templates/rescues/_source.erb
202
242
  - lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
203
243
  - lib/action_dispatch/middleware/templates/rescues/_trace.text.erb
204
- - lib/action_dispatch/middleware/templates/rescues/diagnostics.erb
244
+ - lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb
245
+ - lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb
205
246
  - lib/action_dispatch/middleware/templates/rescues/layout.erb
206
247
  - lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb
207
248
  - lib/action_dispatch/middleware/templates/rescues/missing_template.text.erb
@@ -217,6 +258,7 @@ files:
217
258
  - lib/action_dispatch/request/session.rb
218
259
  - lib/action_dispatch/request/utils.rb
219
260
  - lib/action_dispatch/routing.rb
261
+ - lib/action_dispatch/routing/endpoint.rb
220
262
  - lib/action_dispatch/routing/inspector.rb
221
263
  - lib/action_dispatch/routing/mapper.rb
222
264
  - lib/action_dispatch/routing/polymorphic_routes.rb
@@ -258,7 +300,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
258
300
  requirements:
259
301
  - none
260
302
  rubyforge_project:
261
- rubygems_version: 2.2.2
303
+ rubygems_version: 2.7.6
262
304
  signing_key:
263
305
  specification_version: 4
264
306
  summary: Web-flow and rendering framework putting the VC in MVC (part of Rails).