actionview 7.0.8.7 → 7.1.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +309 -321
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +1 -1
  5. data/app/assets/javascripts/rails-ujs.esm.js +686 -0
  6. data/app/assets/javascripts/rails-ujs.js +630 -0
  7. data/lib/action_view/base.rb +34 -14
  8. data/lib/action_view/buffers.rb +106 -8
  9. data/lib/action_view/cache_expiry.rb +40 -43
  10. data/lib/action_view/context.rb +1 -1
  11. data/lib/action_view/deprecator.rb +7 -0
  12. data/lib/action_view/digestor.rb +1 -1
  13. data/lib/action_view/gem_version.rb +4 -4
  14. data/lib/action_view/helpers/active_model_helper.rb +1 -1
  15. data/lib/action_view/helpers/asset_tag_helper.rb +136 -52
  16. data/lib/action_view/helpers/asset_url_helper.rb +6 -5
  17. data/lib/action_view/helpers/atom_feed_helper.rb +5 -5
  18. data/lib/action_view/helpers/cache_helper.rb +7 -13
  19. data/lib/action_view/helpers/capture_helper.rb +30 -10
  20. data/lib/action_view/helpers/content_exfiltration_prevention_helper.rb +70 -0
  21. data/lib/action_view/helpers/controller_helper.rb +6 -0
  22. data/lib/action_view/helpers/csp_helper.rb +2 -2
  23. data/lib/action_view/helpers/csrf_helper.rb +2 -2
  24. data/lib/action_view/helpers/date_helper.rb +17 -19
  25. data/lib/action_view/helpers/debug_helper.rb +3 -3
  26. data/lib/action_view/helpers/form_helper.rb +54 -25
  27. data/lib/action_view/helpers/form_options_helper.rb +2 -1
  28. data/lib/action_view/helpers/form_tag_helper.rb +49 -15
  29. data/lib/action_view/helpers/javascript_helper.rb +1 -0
  30. data/lib/action_view/helpers/number_helper.rb +37 -330
  31. data/lib/action_view/helpers/output_safety_helper.rb +2 -2
  32. data/lib/action_view/helpers/rendering_helper.rb +1 -1
  33. data/lib/action_view/helpers/sanitize_helper.rb +51 -21
  34. data/lib/action_view/helpers/tag_helper.rb +5 -27
  35. data/lib/action_view/helpers/tags/base.rb +11 -52
  36. data/lib/action_view/helpers/tags/collection_check_boxes.rb +1 -0
  37. data/lib/action_view/helpers/tags/collection_radio_buttons.rb +1 -0
  38. data/lib/action_view/helpers/tags/collection_select.rb +3 -0
  39. data/lib/action_view/helpers/tags/date_field.rb +1 -1
  40. data/lib/action_view/helpers/tags/date_select.rb +2 -0
  41. data/lib/action_view/helpers/tags/datetime_field.rb +14 -6
  42. data/lib/action_view/helpers/tags/datetime_local_field.rb +11 -2
  43. data/lib/action_view/helpers/tags/grouped_collection_select.rb +3 -0
  44. data/lib/action_view/helpers/tags/month_field.rb +1 -1
  45. data/lib/action_view/helpers/tags/select.rb +3 -0
  46. data/lib/action_view/helpers/tags/select_renderer.rb +56 -0
  47. data/lib/action_view/helpers/tags/time_field.rb +1 -1
  48. data/lib/action_view/helpers/tags/time_zone_select.rb +3 -0
  49. data/lib/action_view/helpers/tags/week_field.rb +1 -1
  50. data/lib/action_view/helpers/tags/weekday_select.rb +3 -0
  51. data/lib/action_view/helpers/tags.rb +2 -0
  52. data/lib/action_view/helpers/text_helper.rb +156 -84
  53. data/lib/action_view/helpers/translation_helper.rb +3 -3
  54. data/lib/action_view/helpers/url_helper.rb +46 -17
  55. data/lib/action_view/helpers.rb +2 -0
  56. data/lib/action_view/layouts.rb +8 -6
  57. data/lib/action_view/log_subscriber.rb +49 -32
  58. data/lib/action_view/lookup_context.rb +29 -13
  59. data/lib/action_view/path_registry.rb +57 -0
  60. data/lib/action_view/path_set.rb +13 -14
  61. data/lib/action_view/railtie.rb +26 -3
  62. data/lib/action_view/record_identifier.rb +15 -8
  63. data/lib/action_view/renderer/abstract_renderer.rb +1 -1
  64. data/lib/action_view/renderer/collection_renderer.rb +10 -2
  65. data/lib/action_view/renderer/partial_renderer/collection_caching.rb +2 -1
  66. data/lib/action_view/renderer/partial_renderer.rb +2 -1
  67. data/lib/action_view/renderer/renderer.rb +2 -0
  68. data/lib/action_view/renderer/streaming_template_renderer.rb +3 -2
  69. data/lib/action_view/renderer/template_renderer.rb +3 -2
  70. data/lib/action_view/rendering.rb +22 -4
  71. data/lib/action_view/ripper_ast_parser.rb +5 -5
  72. data/lib/action_view/template/error.rb +14 -1
  73. data/lib/action_view/template/handlers/builder.rb +4 -4
  74. data/lib/action_view/template/handlers/erb/erubi.rb +23 -27
  75. data/lib/action_view/template/handlers/erb.rb +73 -1
  76. data/lib/action_view/template/handlers.rb +1 -1
  77. data/lib/action_view/template/html.rb +1 -1
  78. data/lib/action_view/template/raw_file.rb +1 -1
  79. data/lib/action_view/template/renderable.rb +1 -1
  80. data/lib/action_view/template/resolver.rb +10 -2
  81. data/lib/action_view/template/text.rb +1 -1
  82. data/lib/action_view/template/types.rb +25 -34
  83. data/lib/action_view/template.rb +249 -54
  84. data/lib/action_view/template_path.rb +2 -0
  85. data/lib/action_view/test_case.rb +176 -21
  86. data/lib/action_view/unbound_template.rb +17 -7
  87. data/lib/action_view/version.rb +1 -1
  88. data/lib/action_view/view_paths.rb +15 -24
  89. data/lib/action_view.rb +4 -1
  90. metadata +22 -23
  91. data/lib/assets/compiled/rails-ujs.js +0 -777
@@ -9,6 +9,9 @@ require "rails-dom-testing"
9
9
 
10
10
  module ActionView
11
11
  # = Action View Test Case
12
+ #
13
+ # Read more about <tt>ActionView::TestCase</tt> in {Testing Rails Applications}[https://guides.rubyonrails.org/testing.html#testing-view-partials]
14
+ # in the guides.
12
15
  class TestCase < ActiveSupport::TestCase
13
16
  class TestController < ActionController::Base
14
17
  include ActionDispatch::TestProcess
@@ -60,6 +63,95 @@ module ActionView
60
63
  attr_accessor :controller, :request, :output_buffer, :rendered
61
64
 
62
65
  module ClassMethods
66
+ def inherited(descendant) # :nodoc:
67
+ super
68
+
69
+ descendant_content_class = content_class.dup
70
+
71
+ if descendant_content_class.respond_to?(:set_temporary_name)
72
+ descendant_content_class.set_temporary_name("rendered_content")
73
+ end
74
+
75
+ descendant.content_class = descendant_content_class
76
+ end
77
+
78
+ # Register a callable to parse rendered content for a given template
79
+ # format.
80
+ #
81
+ # Each registered parser will also define a +#rendered.[FORMAT]+ helper
82
+ # method, where +[FORMAT]+ corresponds to the value of the
83
+ # +format+ argument.
84
+ #
85
+ # By default, ActionView::TestCase defines parsers for:
86
+ #
87
+ # * +:html+ - returns an instance of +Nokogiri::XML::Node+
88
+ # * +:json+ - returns an instance of ActiveSupport::HashWithIndifferentAccess
89
+ #
90
+ # These pre-registered parsers also define corresponding helpers:
91
+ #
92
+ # * +:html+ - defines +rendered.html+
93
+ # * +:json+ - defines +rendered.json+
94
+ #
95
+ # ==== Parameters
96
+ #
97
+ # [+format+]
98
+ # The name (as a +Symbol+) of the format used to render the content.
99
+ #
100
+ # [+callable+]
101
+ # The parser. A callable object that accepts the rendered string as
102
+ # its sole argument. Alternatively, the parser can be specified as a
103
+ # block.
104
+ #
105
+ # ==== Examples
106
+ #
107
+ # test "renders HTML" do
108
+ # article = Article.create!(title: "Hello, world")
109
+ #
110
+ # render partial: "articles/article", locals: { article: article }
111
+ #
112
+ # assert_pattern { rendered.html.at("main h1") => { content: "Hello, world" } }
113
+ # end
114
+ #
115
+ # test "renders JSON" do
116
+ # article = Article.create!(title: "Hello, world")
117
+ #
118
+ # render formats: :json, partial: "articles/article", locals: { article: article }
119
+ #
120
+ # assert_pattern { rendered.json => { title: "Hello, world" } }
121
+ # end
122
+ #
123
+ # To parse the rendered content into RSS, register a call to +RSS::Parser.parse+:
124
+ #
125
+ # register_parser :rss, -> rendered { RSS::Parser.parse(rendered) }
126
+ #
127
+ # test "renders RSS" do
128
+ # article = Article.create!(title: "Hello, world")
129
+ #
130
+ # render formats: :rss, partial: article
131
+ #
132
+ # assert_equal "Hello, world", rendered.rss.items.last.title
133
+ # end
134
+ #
135
+ # To parse the rendered content into a +Capybara::Simple::Node+,
136
+ # re-register an +:html+ parser with a call to +Capybara.string+:
137
+ #
138
+ # register_parser :html, -> rendered { Capybara.string(rendered) }
139
+ #
140
+ # test "renders HTML" do
141
+ # article = Article.create!(title: "Hello, world")
142
+ #
143
+ # render partial: article
144
+ #
145
+ # rendered.html.assert_css "h1", text: "Hello, world"
146
+ # end
147
+ #
148
+ def register_parser(format, callable = nil, &block)
149
+ parser = callable || block || :itself.to_proc
150
+ content_class.redefine_method(format) do
151
+ parser.call(to_s)
152
+ end
153
+ end
154
+
63
155
  def tests(helper_class)
64
156
  case helper_class
65
157
  when String, Symbol
@@ -105,15 +197,34 @@ module ActionView
105
197
  end
106
198
  end
107
199
 
200
+ included do
201
+ class_attribute :content_class, instance_accessor: false, default: RenderedViewContent
202
+
203
+ setup :setup_with_controller
204
+
205
+ register_parser :html, -> rendered { Rails::Dom::Testing.html_document.parse(rendered).root }
206
+ register_parser :json, -> rendered { JSON.parse(rendered, object_class: ActiveSupport::HashWithIndifferentAccess) }
207
+
208
+ ActiveSupport.run_load_hooks(:action_view_test_case, self)
209
+
210
+ helper do
211
+ def protect_against_forgery?
212
+ false
213
+ end
214
+
215
+ def _test_case
216
+ controller._test_case
217
+ end
218
+ end
219
+ end
220
+
108
221
  def setup_with_controller
109
222
  controller_class = Class.new(ActionView::TestCase::TestController)
110
223
  @controller = controller_class.new
111
224
  @request = @controller.request
112
225
  @view_flow = ActionView::OutputFlow.new
113
- # empty string ensures buffer has UTF-8 encoding as
114
- # new without arguments returns ASCII-8BIT encoded buffer like String#new
115
- @output_buffer = ActiveSupport::SafeBuffer.new ""
116
- @rendered = +""
226
+ @output_buffer = ActionView::OutputBuffer.new
227
+ @rendered = self.class.content_class.new(+"")
117
228
 
118
229
  test_case_instance = self
119
230
  controller_class.define_method(:_test_case) { test_case_instance }
@@ -133,10 +244,64 @@ module ActionView
133
244
  @_rendered_views ||= RenderedViewsCollection.new
134
245
  end
135
246
 
247
+ ##
248
+ # :method: rendered
249
+ #
250
+ # Returns the content rendered by the last +render+ call.
251
+ #
252
+ # The returned object behaves like a string but also exposes a number of methods
253
+ # that allows you to parse the content string in formats registered using
254
+ # <tt>.register_parser</tt>.
255
+ #
256
+ # By default includes the following parsers:
257
+ #
258
+ # +.html+
259
+ #
260
+ # Parse the <tt>rendered</tt> content String into HTML. By default, this means
261
+ # a <tt>Nokogiri::XML::Node</tt>.
262
+ #
263
+ # test "renders HTML" do
264
+ # article = Article.create!(title: "Hello, world")
265
+ #
266
+ # render partial: "articles/article", locals: { article: article }
267
+ #
268
+ # assert_pattern { rendered.html.at("main h1") => { content: "Hello, world" } }
269
+ # end
270
+ #
271
+ # To parse the rendered content into a <tt>Capybara::Simple::Node</tt>,
272
+ # re-register an <tt>:html</tt> parser with a call to
273
+ # <tt>Capybara.string</tt>:
274
+ #
275
+ # register_parser :html, -> rendered { Capybara.string(rendered) }
276
+ #
277
+ # test "renders HTML" do
278
+ # article = Article.create!(title: "Hello, world")
279
+ #
280
+ # render partial: article
281
+ #
282
+ # rendered.html.assert_css "h1", text: "Hello, world"
283
+ # end
284
+ #
285
+ # +.json+
286
+ #
287
+ # Parse the <tt>rendered</tt> content String into JSON. By default, this means
288
+ # a <tt>ActiveSupport::HashWithIndifferentAccess</tt>.
289
+ #
290
+ # test "renders JSON" do
291
+ # article = Article.create!(title: "Hello, world")
292
+ #
293
+ # render formats: :json, partial: "articles/article", locals: { article: article }
294
+ #
295
+ # assert_pattern { rendered.json => { title: "Hello, world" } }
296
+ # end
297
+
136
298
  def _routes
137
299
  @controller._routes if @controller.respond_to?(:_routes)
138
300
  end
139
301
 
302
+ class RenderedViewContent < String # :nodoc:
303
+ end
304
+
140
305
  # Need to experiment if this priority is the best one: rendered => output_buffer
141
306
  class RenderedViewsCollection
142
307
  def initialize
@@ -163,25 +328,10 @@ module ActionView
163
328
  end
164
329
  end
165
330
 
166
- included do
167
- setup :setup_with_controller
168
- ActiveSupport.run_load_hooks(:action_view_test_case, self)
169
-
170
- helper do
171
- def protect_against_forgery?
172
- false
173
- end
174
-
175
- def _test_case
176
- controller._test_case
177
- end
178
- end
179
- end
180
-
181
331
  private
182
332
  # Need to experiment if this priority is the best one: rendered => output_buffer
183
333
  def document_root_element
184
- Nokogiri::HTML::Document.parse(@rendered.blank? ? @output_buffer : @rendered).root
334
+ Rails::Dom::Testing.html_document.parse(@rendered.blank? ? @output_buffer.to_str : @rendered).root
185
335
  end
186
336
 
187
337
  module Locals
@@ -227,6 +377,10 @@ module ActionView
227
377
  :@_result,
228
378
  :@_routes,
229
379
  :@controller,
380
+ :@_controller,
381
+ :@_request,
382
+ :@_config,
383
+ :@_default_form_builder,
230
384
  :@_layouts,
231
385
  :@_files,
232
386
  :@_rendered_views,
@@ -245,7 +399,7 @@ module ActionView
245
399
  :@view_context_class,
246
400
  :@view_flow,
247
401
  :@_subscribers,
248
- :@html_document
402
+ :@html_document,
249
403
  ]
250
404
 
251
405
  def _user_defined_ivars
@@ -277,6 +431,7 @@ module ActionView
277
431
  super
278
432
  end
279
433
  end
434
+ ruby2_keywords(:method_missing)
280
435
 
281
436
  def respond_to_missing?(name, include_private = false)
282
437
  begin
@@ -18,21 +18,31 @@ module ActionView
18
18
  end
19
19
 
20
20
  def bind_locals(locals)
21
- if template = @templates[locals]
22
- template
23
- else
21
+ unless template = @templates[locals]
24
22
  @write_lock.synchronize do
25
23
  normalized_locals = normalize_locals(locals)
26
24
 
27
25
  # We need ||=, both to dedup on the normalized locals and to check
28
26
  # while holding the lock.
29
- @templates[normalized_locals] ||= build_template(normalized_locals)
27
+ template = (@templates[normalized_locals] ||= build_template(normalized_locals))
30
28
 
31
- # This may have already been assigned, but we've already de-dup'd so
32
- # reassignment is fine.
33
- @templates[locals.dup] = @templates[normalized_locals]
29
+ if template.strict_locals?
30
+ # Under strict locals, we only need one template.
31
+ # This replaces the @templates Concurrent::Map with a hash which
32
+ # returns this template for every key.
33
+ @templates = Hash.new(template).freeze
34
+ else
35
+ # This may have already been assigned, but we've already de-dup'd so
36
+ # reassignment is fine.
37
+ @templates[locals.dup] = template
38
+ end
34
39
  end
35
40
  end
41
+ template
42
+ end
43
+
44
+ def built_templates # :nodoc:
45
+ @templates.values
36
46
  end
37
47
 
38
48
  private
@@ -3,7 +3,7 @@
3
3
  require_relative "gem_version"
4
4
 
5
5
  module ActionView
6
- # Returns the currently loaded version of Action View as a <tt>Gem::Version</tt>.
6
+ # Returns the currently loaded version of Action View as a +Gem::Version+.
7
7
  def self.version
8
8
  gem_version
9
9
  end
@@ -5,7 +5,7 @@ module ActionView
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
- ViewPaths.set_view_paths(self, ActionView::PathSet.new.freeze)
8
+ ActionView::PathRegistry.set_view_paths(self, ActionView::PathSet.new.freeze)
9
9
  end
10
10
 
11
11
  delegate :template_exists?, :any_templates?, :view_paths, :formats, :formats=,
@@ -13,11 +13,11 @@ module ActionView
13
13
 
14
14
  module ClassMethods
15
15
  def _view_paths
16
- ViewPaths.get_view_paths(self)
16
+ ActionView::PathRegistry.get_view_paths(self)
17
17
  end
18
18
 
19
19
  def _view_paths=(paths)
20
- ViewPaths.set_view_paths(self, paths)
20
+ ActionView::PathRegistry.set_view_paths(self, paths)
21
21
  end
22
22
 
23
23
  def _prefixes # :nodoc:
@@ -28,6 +28,13 @@ module ActionView
28
28
  end
29
29
  end
30
30
 
31
+ def _build_view_paths(paths) # :nodoc:
32
+ return paths if ActionView::PathSet === paths
33
+
34
+ paths = ActionView::PathRegistry.cast_file_system_resolvers(paths)
35
+ ActionView::PathSet.new(paths)
36
+ end
37
+
31
38
  # Append a path to the list of view paths for this controller.
32
39
  #
33
40
  # ==== Parameters
@@ -35,7 +42,7 @@ module ActionView
35
42
  # the default view path. You may also provide a custom view path
36
43
  # (see ActionView::PathSet for more information)
37
44
  def append_view_path(path)
38
- self._view_paths = view_paths + Array(path)
45
+ self._view_paths = view_paths + _build_view_paths(path)
39
46
  end
40
47
 
41
48
  # Prepend a path to the list of view paths for this controller.
@@ -45,7 +52,7 @@ module ActionView
45
52
  # the default view path. You may also provide a custom view path
46
53
  # (see ActionView::PathSet for more information)
47
54
  def prepend_view_path(path)
48
- self._view_paths = ActionView::PathSet.new(Array(path) + view_paths)
55
+ self._view_paths = _build_view_paths(path) + view_paths
49
56
  end
50
57
 
51
58
  # A list of all of the default view paths for this controller.
@@ -59,7 +66,7 @@ module ActionView
59
66
  # * <tt>paths</tt> - If a PathSet is provided, use that;
60
67
  # otherwise, process the parameter into a PathSet.
61
68
  def view_paths=(paths)
62
- self._view_paths = ActionView::PathSet.new(Array(paths))
69
+ self._view_paths = _build_view_paths(paths)
63
70
  end
64
71
 
65
72
  private
@@ -70,22 +77,6 @@ module ActionView
70
77
  end
71
78
  end
72
79
 
73
- # :stopdoc:
74
- @all_view_paths = {}
75
-
76
- def self.get_view_paths(klass)
77
- @all_view_paths[klass] || get_view_paths(klass.superclass)
78
- end
79
-
80
- def self.set_view_paths(klass, paths)
81
- @all_view_paths[klass] = paths
82
- end
83
-
84
- def self.all_view_paths
85
- @all_view_paths.values.uniq
86
- end
87
- # :startdoc:
88
-
89
80
  # The prefixes used in render "foo" shortcuts.
90
81
  def _prefixes # :nodoc:
91
82
  self.class._prefixes
@@ -110,7 +101,7 @@ module ActionView
110
101
  # the default view path. You may also provide a custom view path
111
102
  # (see ActionView::PathSet for more information)
112
103
  def append_view_path(path)
113
- lookup_context.view_paths.push(*path)
104
+ lookup_context.append_view_paths(self.class._build_view_paths(path))
114
105
  end
115
106
 
116
107
  # Prepend a path to the list of view paths for the current LookupContext.
@@ -120,7 +111,7 @@ module ActionView
120
111
  # the default view path. You may also provide a custom view path
121
112
  # (see ActionView::PathSet for more information)
122
113
  def prepend_view_path(path)
123
- lookup_context.view_paths.unshift(*path)
114
+ lookup_context.prepend_view_paths(self.class._build_view_paths(path))
124
115
  end
125
116
  end
126
117
  end
data/lib/action_view.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #--
4
- # Copyright (c) 2004-2022 David Heinemeier Hansson
4
+ # Copyright (c) David Heinemeier Hansson
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining
7
7
  # a copy of this software and associated documentation files (the
@@ -26,7 +26,9 @@
26
26
  require "active_support"
27
27
  require "active_support/rails"
28
28
  require "action_view/version"
29
+ require "action_view/deprecator"
29
30
 
31
+ # :include: ../README.rdoc
30
32
  module ActionView
31
33
  extend ActiveSupport::Autoload
32
34
 
@@ -39,6 +41,7 @@ module ActionView
39
41
  autoload :Helpers
40
42
  autoload :LookupContext
41
43
  autoload :Layouts
44
+ autoload :PathRegistry
42
45
  autoload :PathSet
43
46
  autoload :RecordIdentifier
44
47
  autoload :Rendering
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionview
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.8.7
4
+ version: 7.1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 7.0.8.7
19
+ version: 7.1.5.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: 7.0.8.7
26
+ version: 7.1.5.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: builder
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,76 +44,70 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.4'
47
+ version: '1.11'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.4'
54
+ version: '1.11'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rails-html-sanitizer
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.1'
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 1.2.0
61
+ version: '1.6'
65
62
  type: :runtime
66
63
  prerelease: false
67
64
  version_requirements: !ruby/object:Gem::Requirement
68
65
  requirements:
69
66
  - - "~>"
70
67
  - !ruby/object:Gem::Version
71
- version: '1.1'
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.2.0
68
+ version: '1.6'
75
69
  - !ruby/object:Gem::Dependency
76
70
  name: rails-dom-testing
77
71
  requirement: !ruby/object:Gem::Requirement
78
72
  requirements:
79
73
  - - "~>"
80
74
  - !ruby/object:Gem::Version
81
- version: '2.0'
75
+ version: '2.2'
82
76
  type: :runtime
83
77
  prerelease: false
84
78
  version_requirements: !ruby/object:Gem::Requirement
85
79
  requirements:
86
80
  - - "~>"
87
81
  - !ruby/object:Gem::Version
88
- version: '2.0'
82
+ version: '2.2'
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: actionpack
91
85
  requirement: !ruby/object:Gem::Requirement
92
86
  requirements:
93
87
  - - '='
94
88
  - !ruby/object:Gem::Version
95
- version: 7.0.8.7
89
+ version: 7.1.5.1
96
90
  type: :development
97
91
  prerelease: false
98
92
  version_requirements: !ruby/object:Gem::Requirement
99
93
  requirements:
100
94
  - - '='
101
95
  - !ruby/object:Gem::Version
102
- version: 7.0.8.7
96
+ version: 7.1.5.1
103
97
  - !ruby/object:Gem::Dependency
104
98
  name: activemodel
105
99
  requirement: !ruby/object:Gem::Requirement
106
100
  requirements:
107
101
  - - '='
108
102
  - !ruby/object:Gem::Version
109
- version: 7.0.8.7
103
+ version: 7.1.5.1
110
104
  type: :development
111
105
  prerelease: false
112
106
  version_requirements: !ruby/object:Gem::Requirement
113
107
  requirements:
114
108
  - - '='
115
109
  - !ruby/object:Gem::Version
116
- version: 7.0.8.7
110
+ version: 7.1.5.1
117
111
  description: Simple, battle-tested conventions and helpers for building web pages.
118
112
  email: david@loudthinking.com
119
113
  executables: []
@@ -123,6 +117,8 @@ files:
123
117
  - CHANGELOG.md
124
118
  - MIT-LICENSE
125
119
  - README.rdoc
120
+ - app/assets/javascripts/rails-ujs.esm.js
121
+ - app/assets/javascripts/rails-ujs.js
126
122
  - lib/action_view.rb
127
123
  - lib/action_view/base.rb
128
124
  - lib/action_view/buffers.rb
@@ -131,6 +127,7 @@ files:
131
127
  - lib/action_view/dependency_tracker.rb
132
128
  - lib/action_view/dependency_tracker/erb_tracker.rb
133
129
  - lib/action_view/dependency_tracker/ripper_tracker.rb
130
+ - lib/action_view/deprecator.rb
134
131
  - lib/action_view/digestor.rb
135
132
  - lib/action_view/flows.rb
136
133
  - lib/action_view/gem_version.rb
@@ -141,6 +138,7 @@ files:
141
138
  - lib/action_view/helpers/atom_feed_helper.rb
142
139
  - lib/action_view/helpers/cache_helper.rb
143
140
  - lib/action_view/helpers/capture_helper.rb
141
+ - lib/action_view/helpers/content_exfiltration_prevention_helper.rb
144
142
  - lib/action_view/helpers/controller_helper.rb
145
143
  - lib/action_view/helpers/csp_helper.rb
146
144
  - lib/action_view/helpers/csrf_helper.rb
@@ -182,6 +180,7 @@ files:
182
180
  - lib/action_view/helpers/tags/range_field.rb
183
181
  - lib/action_view/helpers/tags/search_field.rb
184
182
  - lib/action_view/helpers/tags/select.rb
183
+ - lib/action_view/helpers/tags/select_renderer.rb
185
184
  - lib/action_view/helpers/tags/tel_field.rb
186
185
  - lib/action_view/helpers/tags/text_area.rb
187
186
  - lib/action_view/helpers/tags/text_field.rb
@@ -200,6 +199,7 @@ files:
200
199
  - lib/action_view/log_subscriber.rb
201
200
  - lib/action_view/lookup_context.rb
202
201
  - lib/action_view/model_naming.rb
202
+ - lib/action_view/path_registry.rb
203
203
  - lib/action_view/path_set.rb
204
204
  - lib/action_view/railtie.rb
205
205
  - lib/action_view/record_identifier.rb
@@ -240,16 +240,15 @@ files:
240
240
  - lib/action_view/unbound_template.rb
241
241
  - lib/action_view/version.rb
242
242
  - lib/action_view/view_paths.rb
243
- - lib/assets/compiled/rails-ujs.js
244
243
  homepage: https://rubyonrails.org
245
244
  licenses:
246
245
  - MIT
247
246
  metadata:
248
247
  bug_tracker_uri: https://github.com/rails/rails/issues
249
- changelog_uri: https://github.com/rails/rails/blob/v7.0.8.7/actionview/CHANGELOG.md
250
- documentation_uri: https://api.rubyonrails.org/v7.0.8.7/
248
+ changelog_uri: https://github.com/rails/rails/blob/v7.1.5.1/actionview/CHANGELOG.md
249
+ documentation_uri: https://api.rubyonrails.org/v7.1.5.1/
251
250
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
252
- source_code_uri: https://github.com/rails/rails/tree/v7.0.8.7/actionview
251
+ source_code_uri: https://github.com/rails/rails/tree/v7.1.5.1/actionview
253
252
  rubygems_mfa_required: 'true'
254
253
  post_install_message:
255
254
  rdoc_options: []