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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +404 -451
- data/README.rdoc +7 -2
- data/lib/abstract_controller/base.rb +16 -6
- data/lib/abstract_controller/callbacks.rb +28 -51
- data/lib/abstract_controller/helpers.rb +11 -4
- data/lib/abstract_controller/railties/routes_helpers.rb +3 -3
- data/lib/abstract_controller/rendering.rb +7 -1
- data/lib/abstract_controller/url_for.rb +1 -1
- data/lib/action_controller/base.rb +3 -2
- data/lib/action_controller/caching/fragments.rb +7 -1
- data/lib/action_controller/caching.rb +1 -1
- data/lib/action_controller/log_subscriber.rb +26 -26
- data/lib/action_controller/metal/conditional_get.rb +37 -12
- data/lib/action_controller/metal/etag_with_template_digest.rb +50 -0
- data/lib/action_controller/metal/exceptions.rb +1 -1
- data/lib/action_controller/metal/force_ssl.rb +1 -1
- data/lib/action_controller/metal/head.rb +7 -3
- data/lib/action_controller/metal/http_authentication.rb +20 -10
- data/lib/action_controller/metal/instrumentation.rb +8 -5
- data/lib/action_controller/metal/live.rb +57 -6
- data/lib/action_controller/metal/mime_responds.rb +25 -246
- data/lib/action_controller/metal/params_wrapper.rb +5 -5
- data/lib/action_controller/metal/rack_delegation.rb +1 -1
- data/lib/action_controller/metal/redirecting.rb +14 -8
- data/lib/action_controller/metal/renderers.rb +29 -11
- data/lib/action_controller/metal/rendering.rb +2 -6
- data/lib/action_controller/metal/request_forgery_protection.rb +78 -7
- data/lib/action_controller/metal/streaming.rb +1 -1
- data/lib/action_controller/metal/strong_parameters.rb +129 -14
- data/lib/action_controller/metal/url_for.rb +11 -12
- data/lib/action_controller/metal.rb +12 -11
- data/lib/action_controller/model_naming.rb +1 -1
- data/lib/action_controller/railtie.rb +4 -0
- data/lib/action_controller/test_case.rb +119 -75
- data/lib/action_controller.rb +1 -1
- data/lib/action_dispatch/http/cache.rb +5 -4
- data/lib/action_dispatch/http/filter_parameters.rb +2 -2
- data/lib/action_dispatch/http/headers.rb +43 -9
- data/lib/action_dispatch/http/mime_negotiation.rb +10 -3
- data/lib/action_dispatch/http/mime_type.rb +18 -4
- data/lib/action_dispatch/http/parameter_filter.rb +1 -1
- data/lib/action_dispatch/http/parameters.rb +11 -26
- data/lib/action_dispatch/http/request.rb +37 -11
- data/lib/action_dispatch/http/response.rb +74 -23
- data/lib/action_dispatch/http/upload.rb +9 -8
- data/lib/action_dispatch/http/url.rb +89 -70
- data/lib/action_dispatch/journey/formatter.rb +34 -18
- data/lib/action_dispatch/journey/gtg/builder.rb +3 -3
- data/lib/action_dispatch/journey/gtg/simulator.rb +10 -7
- data/lib/action_dispatch/journey/gtg/transition_table.rb +20 -28
- data/lib/action_dispatch/journey/nfa/dot.rb +2 -2
- data/lib/action_dispatch/journey/nfa/simulator.rb +1 -1
- data/lib/action_dispatch/journey/nfa/transition_table.rb +5 -5
- data/lib/action_dispatch/journey/nodes/node.rb +4 -0
- data/lib/action_dispatch/journey/parser.rb +52 -60
- data/lib/action_dispatch/journey/parser.y +11 -10
- data/lib/action_dispatch/journey/path/pattern.rb +16 -19
- data/lib/action_dispatch/journey/route.rb +4 -19
- data/lib/action_dispatch/journey/router/strexp.rb +9 -6
- data/lib/action_dispatch/journey/router/utils.rb +1 -1
- data/lib/action_dispatch/journey/router.rb +53 -77
- data/lib/action_dispatch/journey/routes.rb +4 -0
- data/lib/action_dispatch/journey/scanner.rb +5 -5
- data/lib/action_dispatch/journey/visitors.rb +81 -92
- data/lib/action_dispatch/journey/visualizer/fsm.css +0 -4
- data/lib/action_dispatch/journey/visualizer/index.html.erb +2 -2
- data/lib/action_dispatch/middleware/callbacks.rb +1 -1
- data/lib/action_dispatch/middleware/cookies.rb +34 -34
- data/lib/action_dispatch/middleware/debug_exceptions.rb +15 -4
- data/lib/action_dispatch/middleware/exception_wrapper.rb +50 -18
- data/lib/action_dispatch/middleware/flash.rb +13 -7
- data/lib/action_dispatch/middleware/params_parser.rb +1 -1
- data/lib/action_dispatch/middleware/public_exceptions.rb +12 -3
- data/lib/action_dispatch/middleware/remote_ip.rb +40 -54
- data/lib/action_dispatch/middleware/request_id.rb +1 -1
- data/lib/action_dispatch/middleware/session/cookie_store.rb +1 -1
- data/lib/action_dispatch/middleware/show_exceptions.rb +1 -0
- data/lib/action_dispatch/middleware/ssl.rb +1 -1
- data/lib/action_dispatch/middleware/static.rb +75 -39
- data/lib/action_dispatch/middleware/templates/rescues/_source.erb +21 -19
- data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +37 -9
- data/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +2 -8
- data/lib/action_dispatch/middleware/templates/rescues/{diagnostics.erb → diagnostics.html.erb} +0 -0
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
- data/lib/action_dispatch/middleware/templates/rescues/layout.erb +6 -0
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +4 -0
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +2 -0
- data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +1 -24
- data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +0 -1
- data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +120 -64
- data/lib/action_dispatch/railtie.rb +2 -0
- data/lib/action_dispatch/routing/endpoint.rb +10 -0
- data/lib/action_dispatch/routing/inspector.rb +5 -12
- data/lib/action_dispatch/routing/mapper.rb +414 -283
- data/lib/action_dispatch/routing/polymorphic_routes.rb +191 -79
- data/lib/action_dispatch/routing/redirection.rb +10 -12
- data/lib/action_dispatch/routing/route_set.rb +300 -173
- data/lib/action_dispatch/routing/routes_proxy.rb +5 -4
- data/lib/action_dispatch/routing/url_for.rb +17 -5
- data/lib/action_dispatch/testing/assertions/dom.rb +2 -26
- data/lib/action_dispatch/testing/assertions/response.rb +2 -7
- data/lib/action_dispatch/testing/assertions/routing.rb +22 -22
- data/lib/action_dispatch/testing/assertions/selector.rb +2 -429
- data/lib/action_dispatch/testing/assertions/tag.rb +2 -134
- data/lib/action_dispatch/testing/assertions.rb +11 -7
- data/lib/action_dispatch/testing/integration.rb +28 -20
- data/lib/action_dispatch/testing/test_request.rb +1 -1
- data/lib/action_dispatch/testing/test_response.rb +1 -5
- data/lib/action_pack/gem_version.rb +3 -3
- metadata +55 -13
- data/lib/action_controller/metal/responder.rb +0 -297
@@ -1,135 +1,3 @@
|
|
1
|
-
require '
|
1
|
+
require 'active_support/deprecation'
|
2
2
|
|
3
|
-
|
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
|
15
|
-
|
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
|
193
|
-
include app.routes.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)
|
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
|
-
|
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.
|
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
|
-
|
342
|
-
|
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
|
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
|
@@ -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.
|
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
|
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 =
|
10
|
-
TINY =
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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).
|