actionpack 4.1.7 → 4.2.1

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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +311 -527
  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/url_for.rb +1 -1
  9. data/lib/action_controller/base.rb +2 -1
  10. data/lib/action_controller/caching/fragments.rb +7 -1
  11. data/lib/action_controller/caching.rb +1 -1
  12. data/lib/action_controller/log_subscriber.rb +26 -26
  13. data/lib/action_controller/metal/conditional_get.rb +37 -12
  14. data/lib/action_controller/metal/etag_with_template_digest.rb +50 -0
  15. data/lib/action_controller/metal/exceptions.rb +1 -1
  16. data/lib/action_controller/metal/force_ssl.rb +1 -1
  17. data/lib/action_controller/metal/head.rb +7 -3
  18. data/lib/action_controller/metal/http_authentication.rb +14 -9
  19. data/lib/action_controller/metal/instrumentation.rb +8 -5
  20. data/lib/action_controller/metal/live.rb +57 -6
  21. data/lib/action_controller/metal/mime_responds.rb +23 -246
  22. data/lib/action_controller/metal/params_wrapper.rb +2 -2
  23. data/lib/action_controller/metal/rack_delegation.rb +1 -1
  24. data/lib/action_controller/metal/redirecting.rb +14 -8
  25. data/lib/action_controller/metal/renderers.rb +30 -10
  26. data/lib/action_controller/metal/rendering.rb +2 -6
  27. data/lib/action_controller/metal/request_forgery_protection.rb +78 -7
  28. data/lib/action_controller/metal/streaming.rb +1 -1
  29. data/lib/action_controller/metal/strong_parameters.rb +125 -12
  30. data/lib/action_controller/metal/url_for.rb +11 -12
  31. data/lib/action_controller/metal.rb +12 -11
  32. data/lib/action_controller/model_naming.rb +1 -1
  33. data/lib/action_controller/railtie.rb +4 -0
  34. data/lib/action_controller/test_case.rb +112 -75
  35. data/lib/action_controller.rb +1 -1
  36. data/lib/action_dispatch/http/cache.rb +5 -4
  37. data/lib/action_dispatch/http/filter_parameters.rb +2 -2
  38. data/lib/action_dispatch/http/headers.rb +43 -9
  39. data/lib/action_dispatch/http/mime_negotiation.rb +10 -3
  40. data/lib/action_dispatch/http/mime_type.rb +2 -2
  41. data/lib/action_dispatch/http/parameter_filter.rb +1 -1
  42. data/lib/action_dispatch/http/parameters.rb +11 -26
  43. data/lib/action_dispatch/http/request.rb +37 -11
  44. data/lib/action_dispatch/http/response.rb +70 -18
  45. data/lib/action_dispatch/http/upload.rb +3 -8
  46. data/lib/action_dispatch/http/url.rb +88 -69
  47. data/lib/action_dispatch/journey/formatter.rb +33 -17
  48. data/lib/action_dispatch/journey/gtg/builder.rb +3 -3
  49. data/lib/action_dispatch/journey/gtg/simulator.rb +10 -7
  50. data/lib/action_dispatch/journey/gtg/transition_table.rb +20 -28
  51. data/lib/action_dispatch/journey/nfa/dot.rb +2 -2
  52. data/lib/action_dispatch/journey/nfa/simulator.rb +1 -1
  53. data/lib/action_dispatch/journey/nfa/transition_table.rb +5 -5
  54. data/lib/action_dispatch/journey/nodes/node.rb +4 -0
  55. data/lib/action_dispatch/journey/parser.rb +52 -60
  56. data/lib/action_dispatch/journey/parser.y +11 -10
  57. data/lib/action_dispatch/journey/path/pattern.rb +16 -19
  58. data/lib/action_dispatch/journey/route.rb +3 -18
  59. data/lib/action_dispatch/journey/router/strexp.rb +9 -6
  60. data/lib/action_dispatch/journey/router.rb +53 -77
  61. data/lib/action_dispatch/journey/scanner.rb +5 -5
  62. data/lib/action_dispatch/journey/visitors.rb +81 -92
  63. data/lib/action_dispatch/journey/visualizer/fsm.css +0 -4
  64. data/lib/action_dispatch/journey/visualizer/index.html.erb +2 -2
  65. data/lib/action_dispatch/middleware/callbacks.rb +1 -1
  66. data/lib/action_dispatch/middleware/cookies.rb +29 -29
  67. data/lib/action_dispatch/middleware/debug_exceptions.rb +15 -4
  68. data/lib/action_dispatch/middleware/exception_wrapper.rb +50 -18
  69. data/lib/action_dispatch/middleware/flash.rb +13 -7
  70. data/lib/action_dispatch/middleware/params_parser.rb +1 -1
  71. data/lib/action_dispatch/middleware/public_exceptions.rb +12 -3
  72. data/lib/action_dispatch/middleware/remote_ip.rb +40 -54
  73. data/lib/action_dispatch/middleware/request_id.rb +1 -1
  74. data/lib/action_dispatch/middleware/session/cookie_store.rb +1 -1
  75. data/lib/action_dispatch/middleware/show_exceptions.rb +1 -0
  76. data/lib/action_dispatch/middleware/static.rb +66 -37
  77. data/lib/action_dispatch/middleware/templates/rescues/_source.erb +21 -19
  78. data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +37 -9
  79. data/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +2 -8
  80. data/lib/action_dispatch/middleware/templates/rescues/{diagnostics.erb → diagnostics.html.erb} +0 -0
  81. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
  82. data/lib/action_dispatch/middleware/templates/rescues/layout.erb +6 -0
  83. data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +4 -0
  84. data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +2 -0
  85. data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +1 -24
  86. data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +0 -1
  87. data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +120 -64
  88. data/lib/action_dispatch/routing/endpoint.rb +10 -0
  89. data/lib/action_dispatch/routing/inspector.rb +5 -12
  90. data/lib/action_dispatch/routing/mapper.rb +410 -281
  91. data/lib/action_dispatch/routing/polymorphic_routes.rb +191 -79
  92. data/lib/action_dispatch/routing/redirection.rb +10 -12
  93. data/lib/action_dispatch/routing/route_set.rb +297 -168
  94. data/lib/action_dispatch/routing/url_for.rb +15 -4
  95. data/lib/action_dispatch/testing/assertions/dom.rb +2 -26
  96. data/lib/action_dispatch/testing/assertions/response.rb +2 -7
  97. data/lib/action_dispatch/testing/assertions/routing.rb +22 -22
  98. data/lib/action_dispatch/testing/assertions/selector.rb +2 -429
  99. data/lib/action_dispatch/testing/assertions/tag.rb +2 -134
  100. data/lib/action_dispatch/testing/assertions.rb +11 -7
  101. data/lib/action_dispatch/testing/integration.rb +24 -19
  102. data/lib/action_dispatch/testing/test_request.rb +1 -1
  103. data/lib/action_dispatch/testing/test_response.rb +7 -0
  104. data/lib/action_pack/gem_version.rb +3 -3
  105. metadata +55 -13
  106. 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 =~ /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,13 +294,7 @@ 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)
@@ -319,6 +307,10 @@ module ActionDispatch
319
307
 
320
308
  return response.status
321
309
  end
310
+
311
+ def build_full_uri(path, env)
312
+ "#{env['rack.url_scheme']}://#{env['SERVER_NAME']}:#{env['SERVER_PORT']}#{path}"
313
+ end
322
314
  end
323
315
 
324
316
  module Runner
@@ -334,12 +326,21 @@ module ActionDispatch
334
326
  @integration_session = Integration::Session.new(app)
335
327
  end
336
328
 
329
+ def remove! # :nodoc:
330
+ @integration_session = nil
331
+ end
332
+
337
333
  %w(get post patch put head delete cookies assigns
338
334
  xml_http_request xhr get_via_redirect post_via_redirect).each do |method|
339
335
  define_method(method) do |*args|
340
336
  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'
337
+
338
+ # reset the html_document variable, except for cookies/assigns calls
339
+ unless method == 'cookies' || method == 'assigns'
340
+ @html_document = nil
341
+ reset_template_assertion
342
+ end
343
+
343
344
  integration_session.__send__(method, *args).tap do
344
345
  copy_session_variables!
345
346
  end
@@ -356,7 +357,7 @@ module ActionDispatch
356
357
  # By default, a single session is automatically created for you, but you
357
358
  # can use this method to open multiple sessions that ought to be tested
358
359
  # simultaneously.
359
- def open_session(app = nil)
360
+ def open_session
360
361
  dup.tap do |session|
361
362
  yield session if block_given?
362
363
  end
@@ -502,5 +503,9 @@ module ActionDispatch
502
503
  reset! unless integration_session
503
504
  integration_session.url_options
504
505
  end
506
+
507
+ def document_root_element
508
+ html_document.root
509
+ end
505
510
  end
506
511
  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)
@@ -25,5 +25,12 @@ module ActionDispatch
25
25
 
26
26
  # Was there a server-side error?
27
27
  alias_method :error?, :server_error?
28
+
29
+ def merge_default_headers(original, *args)
30
+ # Default headers are already applied, no need to merge them a second time.
31
+ # This makes sure that default headers, removed in controller actions, will
32
+ # not be reapplied to the test response.
33
+ original
34
+ end
28
35
  end
29
36
  end
@@ -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 = 1
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.1
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: 2015-03-19 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.1
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.1
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.1
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.1
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.1
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.1
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.1
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.1
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.4.5
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).