actionview 7.2.1 → 8.0.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -99
- data/lib/action_view/dependency_tracker/erb_tracker.rb +35 -27
- data/lib/action_view/dependency_tracker/ruby_tracker.rb +2 -19
- data/lib/action_view/dependency_tracker/wildcard_resolver.rb +32 -0
- data/lib/action_view/dependency_tracker.rb +1 -0
- data/lib/action_view/gem_version.rb +4 -4
- data/lib/action_view/helpers/cache_helper.rb +8 -0
- data/lib/action_view/helpers/form_helper.rb +59 -60
- data/lib/action_view/helpers/form_options_helper.rb +16 -14
- data/lib/action_view/helpers/form_tag_helper.rb +18 -16
- data/lib/action_view/helpers/rendering_helper.rb +160 -50
- data/lib/action_view/helpers/tag_helper.rb +41 -38
- data/lib/action_view/helpers/tags/collection_check_boxes.rb +4 -3
- data/lib/action_view/helpers/url_helper.rb +3 -3
- data/lib/action_view/layouts.rb +1 -1
- data/lib/action_view/render_parser/prism_render_parser.rb +13 -1
- data/lib/action_view/render_parser/ripper_render_parser.rb +10 -1
- data/lib/action_view/renderer/streaming_template_renderer.rb +0 -1
- data/lib/action_view/rendering.rb +2 -3
- data/lib/action_view/template/resolver.rb +0 -1
- data/lib/action_view/template.rb +0 -1
- metadata +17 -16
@@ -1,32 +1,140 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :markup: markdown
|
4
|
+
|
3
5
|
module ActionView
|
4
6
|
module Helpers # :nodoc:
|
5
|
-
#
|
7
|
+
# # Action View Rendering Helpers
|
6
8
|
#
|
7
|
-
# Implements methods that allow rendering from a view context.
|
8
|
-
#
|
9
|
-
#
|
9
|
+
# Implements methods that allow rendering from a view context. In order to use
|
10
|
+
# this module, all you need is to implement view_renderer that returns an
|
11
|
+
# ActionView::Renderer object.
|
10
12
|
module RenderingHelper
|
11
|
-
#
|
13
|
+
# Renders a template and returns the result.
|
14
|
+
#
|
15
|
+
# Pass the template to render as the first argument. This is shorthand
|
16
|
+
# syntax for partial rendering, so the template filename should be
|
17
|
+
# prefixed with an underscore. The partial renderer looks for the partial
|
18
|
+
# template in the directory of the calling template first.
|
19
|
+
#
|
20
|
+
# <% # app/views/posts/new.html.erb %>
|
21
|
+
# <%= render "form" %>
|
22
|
+
# # => renders app/views/posts/_form.html.erb
|
23
|
+
#
|
24
|
+
# Use the complete view path to render a partial from another directory.
|
25
|
+
#
|
26
|
+
# <% # app/views/posts/show.html.erb %>
|
27
|
+
# <%= render "comments/form" %>
|
28
|
+
# # => renders app/views/comments/_form.html.erb
|
29
|
+
#
|
30
|
+
# Without the rendering mode, the second argument can be a Hash of local
|
31
|
+
# variable assignments for the template.
|
32
|
+
#
|
33
|
+
# <% # app/views/posts/new.html.erb %>
|
34
|
+
# <%= render "form", post: Post.new %>
|
35
|
+
# # => renders app/views/posts/_form.html.erb
|
36
|
+
#
|
37
|
+
# If the first argument responds to `render_in`, the template will be rendered
|
38
|
+
# by calling `render_in` with the current view context.
|
39
|
+
#
|
40
|
+
# class Greeting
|
41
|
+
# def render_in(view_context)
|
42
|
+
# view_context.render html: "<h1>Hello, World</h1>"
|
43
|
+
# end
|
44
|
+
#
|
45
|
+
# def format
|
46
|
+
# :html
|
47
|
+
# end
|
48
|
+
# end
|
49
|
+
#
|
50
|
+
# <%= render Greeting.new %>
|
51
|
+
# # => "<h1>Hello, World</h1>"
|
52
|
+
#
|
53
|
+
# #### Rendering Mode
|
54
|
+
#
|
55
|
+
# Pass the rendering mode as first argument to override it.
|
56
|
+
#
|
57
|
+
# `:partial`
|
58
|
+
# : See ActionView::PartialRenderer for details.
|
59
|
+
#
|
60
|
+
# <%= render partial: "form", locals: { post: Post.new } %>
|
61
|
+
# # => renders app/views/posts/_form.html.erb
|
62
|
+
#
|
63
|
+
# `:file`
|
64
|
+
# : Renders the contents of a file. This option should **not** be used with
|
65
|
+
# unsanitized user input.
|
66
|
+
#
|
67
|
+
# <%= render file: "/path/to/some/file" %>
|
68
|
+
# # => renders /path/to/some/file
|
69
|
+
#
|
70
|
+
# `:inline`
|
71
|
+
# : Renders an ERB template string.
|
72
|
+
#
|
73
|
+
# <% name = "World" %>
|
74
|
+
# <%= render inline: "<h1>Hello, <%= name %>!</h1>" %>
|
75
|
+
# # => renders "<h1>Hello, World!</h1>"
|
76
|
+
#
|
77
|
+
# `:body`
|
78
|
+
# : Renders the provided text, and sets the format as `:text`.
|
79
|
+
#
|
80
|
+
# <%= render body: "Hello, World!" %>
|
81
|
+
# # => renders "Hello, World!"
|
82
|
+
#
|
83
|
+
# `:plain`
|
84
|
+
# : Renders the provided text, and sets the format as `:text`.
|
85
|
+
#
|
86
|
+
# <%= render plain: "Hello, World!" %>
|
87
|
+
# # => renders "Hello, World!"
|
88
|
+
#
|
89
|
+
# `:html`
|
90
|
+
# : Renders the provided HTML string, and sets the format as
|
91
|
+
# `:html`. If the string is not `html_safe?`, performs HTML escaping on
|
92
|
+
# the string before rendering.
|
93
|
+
#
|
94
|
+
# <%= render html: "<h1>Hello, World!</h1>".html_safe %>
|
95
|
+
# # => renders "<h1>Hello, World!</h1>"
|
96
|
+
#
|
97
|
+
# <%= render html: "<h1>Hello, World!</h1>" %>
|
98
|
+
# # => renders "<h1>Hello, World!</h1>"
|
99
|
+
#
|
100
|
+
# `:renderable`
|
101
|
+
# : Renders the provided object by calling `render_in` with the current view
|
102
|
+
# context. The format is determined by calling `format` on the
|
103
|
+
# renderable if it responds to `format`, falling back to `:html` by
|
104
|
+
# default.
|
105
|
+
#
|
106
|
+
# <%= render renderable: Greeting.new %>
|
107
|
+
# # => renders "<h1>Hello, World</h1>"
|
108
|
+
#
|
109
|
+
#
|
110
|
+
# #### Options
|
111
|
+
#
|
112
|
+
# `:locals`
|
113
|
+
# : Hash of local variable assignments for the template.
|
114
|
+
#
|
115
|
+
# <%= render inline: "<h1>Hello, <%= name %>!</h1>", locals: { name: "World" } %>
|
116
|
+
# # => renders "<h1>Hello, World!</h1>"
|
117
|
+
#
|
118
|
+
# `:formats`
|
119
|
+
# : Override the current format to render a template for a different format.
|
120
|
+
#
|
121
|
+
# <% # app/views/posts/show.html.erb %>
|
122
|
+
# <%= render template: "posts/content", formats: [:text] %>
|
123
|
+
# # => renders app/views/posts/content.text.erb
|
12
124
|
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
# * <tt>:inline</tt> - Renders an inline template similar to how it's done in the controller.
|
16
|
-
# * <tt>:plain</tt> - Renders the text passed in out. Setting the content
|
17
|
-
# type as <tt>text/plain</tt>.
|
18
|
-
# * <tt>:html</tt> - Renders the HTML safe string passed in out, otherwise
|
19
|
-
# performs HTML escape on the string first. Setting the content type as
|
20
|
-
# <tt>text/html</tt>.
|
21
|
-
# * <tt>:body</tt> - Renders the text passed in, and inherits the content
|
22
|
-
# type of <tt>text/plain</tt> from ActionDispatch::Response object.
|
125
|
+
# `:variants`
|
126
|
+
# : Render a template for a different variant.
|
23
127
|
#
|
24
|
-
#
|
128
|
+
# <% # app/views/posts/show.html.erb %>
|
129
|
+
# <%= render template: "posts/content", variants: [:tablet] %>
|
130
|
+
# # => renders app/views/posts/content.html+tablet.erb
|
25
131
|
#
|
26
|
-
#
|
27
|
-
#
|
132
|
+
# `:handlers`
|
133
|
+
# : Render a template for a different handler.
|
28
134
|
#
|
29
|
-
#
|
135
|
+
# <% # app/views/posts/show.html.erb %>
|
136
|
+
# <%= render template: "posts/content", handlers: [:builder] %>
|
137
|
+
# # => renders app/views/posts/content.html.builder
|
30
138
|
def render(options = {}, locals = {}, &block)
|
31
139
|
case options
|
32
140
|
when Hash
|
@@ -47,52 +155,54 @@ module ActionView
|
|
47
155
|
end
|
48
156
|
|
49
157
|
# Overrides _layout_for in the context object so it supports the case a block is
|
50
|
-
# passed to a partial. Returns the contents that are yielded to a layout, given
|
51
|
-
# name or a block.
|
158
|
+
# passed to a partial. Returns the contents that are yielded to a layout, given
|
159
|
+
# a name or a block.
|
52
160
|
#
|
53
|
-
# You can think of a layout as a method that is called with a block. If the user
|
54
|
-
#
|
55
|
-
# If the user calls simply
|
161
|
+
# You can think of a layout as a method that is called with a block. If the user
|
162
|
+
# calls `yield :some_name`, the block, by default, returns
|
163
|
+
# `content_for(:some_name)`. If the user calls simply `yield`, the default block
|
164
|
+
# returns `content_for(:layout)`.
|
56
165
|
#
|
57
166
|
# The user can override this default by passing a block to the layout:
|
58
167
|
#
|
59
|
-
#
|
60
|
-
#
|
61
|
-
#
|
62
|
-
#
|
168
|
+
# # The template
|
169
|
+
# <%= render layout: "my_layout" do %>
|
170
|
+
# Content
|
171
|
+
# <% end %>
|
63
172
|
#
|
64
|
-
#
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
173
|
+
# # The layout
|
174
|
+
# <html>
|
175
|
+
# <%= yield %>
|
176
|
+
# </html>
|
68
177
|
#
|
69
|
-
# In this case, instead of the default block, which would return
|
70
|
-
# this method returns the block that was passed in to
|
178
|
+
# In this case, instead of the default block, which would return `content_for(:layout)`,
|
179
|
+
# this method returns the block that was passed in to `render :layout`, and the response
|
71
180
|
# would be
|
72
181
|
#
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
182
|
+
# <html>
|
183
|
+
# Content
|
184
|
+
# </html>
|
76
185
|
#
|
77
|
-
# Finally, the block can take block arguments, which can be passed in by
|
186
|
+
# Finally, the block can take block arguments, which can be passed in by
|
187
|
+
# `yield`:
|
78
188
|
#
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
82
|
-
#
|
189
|
+
# # The template
|
190
|
+
# <%= render layout: "my_layout" do |customer| %>
|
191
|
+
# Hello <%= customer.name %>
|
192
|
+
# <% end %>
|
83
193
|
#
|
84
|
-
#
|
85
|
-
#
|
86
|
-
#
|
87
|
-
#
|
194
|
+
# # The layout
|
195
|
+
# <html>
|
196
|
+
# <%= yield Struct.new(:name).new("David") %>
|
197
|
+
# </html>
|
88
198
|
#
|
89
|
-
# In this case, the layout would receive the block passed into
|
199
|
+
# In this case, the layout would receive the block passed into `render :layout`,
|
90
200
|
# and the struct specified would be passed into the block as an argument. The result
|
91
201
|
# would be
|
92
202
|
#
|
93
|
-
#
|
94
|
-
#
|
95
|
-
#
|
203
|
+
# <html>
|
204
|
+
# Hello David
|
205
|
+
# </html>
|
96
206
|
#
|
97
207
|
def _layout_for(*args, &block)
|
98
208
|
name = args.first
|
@@ -48,48 +48,51 @@ module ActionView
|
|
48
48
|
include CaptureHelper
|
49
49
|
include OutputSafetyHelper
|
50
50
|
|
51
|
-
def
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
51
|
+
def deprecated_void_content(name)
|
52
|
+
ActionView.deprecator.warn <<~TEXT
|
53
|
+
Putting content inside a void element (#{name}) is invalid
|
54
|
+
according to the HTML5 spec, and so it is being deprecated
|
55
|
+
without replacement. In Rails 8.0, passing content as a
|
56
|
+
positional argument will raise, and using a block will have
|
57
|
+
no effect.
|
58
|
+
TEXT
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.define_element(name, code_generator:, method_name: name)
|
62
|
+
return if method_defined?(name)
|
63
|
+
|
64
|
+
code_generator.class_eval do |batch|
|
65
|
+
batch << "\n" <<
|
66
|
+
"def #{method_name}(content = nil, escape: true, **options, &block)" <<
|
67
|
+
" tag_string(#{name.inspect}, content, options, escape: escape, &block)" <<
|
68
|
+
"end"
|
58
69
|
end
|
59
70
|
end
|
60
71
|
|
61
|
-
def self.define_void_element(name, code_generator:, method_name: name
|
62
|
-
code_generator.
|
63
|
-
batch
|
64
|
-
def #{method_name}(content = nil, escape: true, **options, &block)
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
TEXT
|
73
|
-
tag_string("#{name}", content, options, escape: escape, &block)
|
74
|
-
else
|
75
|
-
self_closing_tag_string("#{name}", options, escape, ">")
|
76
|
-
end
|
77
|
-
end
|
78
|
-
RUBY
|
72
|
+
def self.define_void_element(name, code_generator:, method_name: name)
|
73
|
+
code_generator.class_eval do |batch|
|
74
|
+
batch << "\n" <<
|
75
|
+
"def #{method_name}(content = nil, escape: true, **options, &block)" <<
|
76
|
+
" if content || block" <<
|
77
|
+
" deprecated_void_content(#{name.inspect})" <<
|
78
|
+
" tag_string(#{name.inspect}, content, options, escape: escape, &block)" <<
|
79
|
+
" else" <<
|
80
|
+
" self_closing_tag_string(#{name.inspect}, options, escape, '>')" <<
|
81
|
+
" end" <<
|
82
|
+
"end"
|
79
83
|
end
|
80
84
|
end
|
81
85
|
|
82
|
-
def self.define_self_closing_element(name, code_generator:, method_name: name
|
83
|
-
code_generator.
|
84
|
-
batch
|
85
|
-
def #{method_name}(content = nil, escape: true, **options, &block)
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
92
|
-
RUBY
|
86
|
+
def self.define_self_closing_element(name, code_generator:, method_name: name)
|
87
|
+
code_generator.class_eval do |batch|
|
88
|
+
batch << "\n" <<
|
89
|
+
"def #{method_name}(content = nil, escape: true, **options, &block)" <<
|
90
|
+
" if content || block" <<
|
91
|
+
" tag_string(#{name.inspect}, content, options, escape: escape, &block)" <<
|
92
|
+
" else" <<
|
93
|
+
" self_closing_tag_string(#{name.inspect}, options, escape)" <<
|
94
|
+
" end" <<
|
95
|
+
"end"
|
93
96
|
end
|
94
97
|
end
|
95
98
|
|
@@ -110,8 +113,8 @@ module ActionView
|
|
110
113
|
define_void_element :wbr, code_generator: code_generator
|
111
114
|
|
112
115
|
define_self_closing_element :animate, code_generator: code_generator
|
113
|
-
define_self_closing_element :animateMotion, code_generator: code_generator
|
114
|
-
define_self_closing_element :animateTransform, code_generator: code_generator
|
116
|
+
define_self_closing_element :animateMotion, code_generator: code_generator, method_name: :animate_motion
|
117
|
+
define_self_closing_element :animateTransform, code_generator: code_generator, method_name: :animate_transform
|
115
118
|
define_self_closing_element :circle, code_generator: code_generator
|
116
119
|
define_self_closing_element :ellipse, code_generator: code_generator
|
117
120
|
define_self_closing_element :line, code_generator: code_generator
|
@@ -10,12 +10,13 @@ module ActionView
|
|
10
10
|
include FormOptionsHelper
|
11
11
|
|
12
12
|
class CheckBoxBuilder < Builder # :nodoc:
|
13
|
-
def
|
13
|
+
def checkbox(extra_html_options = {})
|
14
14
|
html_options = extra_html_options.merge(@input_html_options)
|
15
15
|
html_options[:multiple] = true
|
16
16
|
html_options[:skip_default_ids] = false
|
17
|
-
@template_object.
|
17
|
+
@template_object.checkbox(@object_name, @method_name, html_options, @value, nil)
|
18
18
|
end
|
19
|
+
alias_method :check_box, :checkbox
|
19
20
|
end
|
20
21
|
|
21
22
|
def render(&block)
|
@@ -24,7 +25,7 @@ module ActionView
|
|
24
25
|
|
25
26
|
private
|
26
27
|
def render_component(builder)
|
27
|
-
builder.
|
28
|
+
builder.checkbox + builder.label
|
28
29
|
end
|
29
30
|
|
30
31
|
def hidden_field_name
|
@@ -556,14 +556,14 @@ module ActionView
|
|
556
556
|
|
557
557
|
options ||= options_as_kwargs
|
558
558
|
check_parameters ||= options.is_a?(Hash) && options.delete(:check_parameters)
|
559
|
-
url_string = URI::
|
559
|
+
url_string = URI::RFC2396_PARSER.unescape(url_for(options)).force_encoding(Encoding::BINARY)
|
560
560
|
|
561
561
|
# We ignore any extra parameters in the request_uri if the
|
562
562
|
# submitted URL doesn't have any either. This lets the function
|
563
563
|
# work with things like ?order=asc
|
564
564
|
# the behavior can be disabled with check_parameters: true
|
565
565
|
request_uri = url_string.index("?") || check_parameters ? request.fullpath : request.path
|
566
|
-
request_uri = URI::
|
566
|
+
request_uri = URI::RFC2396_PARSER.unescape(request_uri).force_encoding(Encoding::BINARY)
|
567
567
|
|
568
568
|
if %r{^\w+://}.match?(url_string)
|
569
569
|
request_uri = +"#{request.protocol}#{request.host_with_port}#{request_uri}"
|
@@ -710,7 +710,7 @@ module ActionView
|
|
710
710
|
end
|
711
711
|
|
712
712
|
def add_method_to_attributes!(html_options, method)
|
713
|
-
if method_not_get_method?(method) && !html_options["rel"]
|
713
|
+
if method_not_get_method?(method) && !html_options["rel"].to_s.include?("nofollow")
|
714
714
|
if html_options["rel"].blank?
|
715
715
|
html_options["rel"] = "nofollow"
|
716
716
|
else
|
data/lib/action_view/layouts.rb
CHANGED
@@ -97,9 +97,21 @@ module ActionView
|
|
97
97
|
def render_call_template(node)
|
98
98
|
object_template = false
|
99
99
|
template =
|
100
|
-
|
100
|
+
case node.type
|
101
|
+
when :string_node
|
101
102
|
path = node.unescaped
|
102
103
|
path.include?("/") ? path : "#{directory}/#{path}"
|
104
|
+
when :interpolated_string_node
|
105
|
+
node.parts.map do |node|
|
106
|
+
case node.type
|
107
|
+
when :string_node
|
108
|
+
node.unescaped
|
109
|
+
when :embedded_statements_node
|
110
|
+
"*"
|
111
|
+
else
|
112
|
+
return
|
113
|
+
end
|
114
|
+
end.join("")
|
103
115
|
else
|
104
116
|
dependency =
|
105
117
|
case node.type
|
@@ -66,7 +66,16 @@ module ActionView
|
|
66
66
|
|
67
67
|
def to_string
|
68
68
|
raise unless string?
|
69
|
-
|
69
|
+
|
70
|
+
# s(:string_literal, s(:string_content, map))
|
71
|
+
self[0].map do |node|
|
72
|
+
case node.type
|
73
|
+
when :@tstring_content
|
74
|
+
node[0]
|
75
|
+
when :string_embexpr
|
76
|
+
"*"
|
77
|
+
end
|
78
|
+
end.join("")
|
70
79
|
end
|
71
80
|
|
72
81
|
def hash?
|
@@ -118,6 +118,7 @@ module ActionView
|
|
118
118
|
|
119
119
|
def render_to_body(options = {})
|
120
120
|
_process_options(options)
|
121
|
+
_process_render_template_options(options)
|
121
122
|
_render_template(options)
|
122
123
|
end
|
123
124
|
|
@@ -173,8 +174,7 @@ module ActionView
|
|
173
174
|
end
|
174
175
|
|
175
176
|
# Normalize options.
|
176
|
-
def
|
177
|
-
options = super(options)
|
177
|
+
def _process_render_template_options(options)
|
178
178
|
if options[:partial] == true
|
179
179
|
options[:partial] = action_name
|
180
180
|
end
|
@@ -184,7 +184,6 @@ module ActionView
|
|
184
184
|
end
|
185
185
|
|
186
186
|
options[:template] ||= (options[:action] || action_name).to_s
|
187
|
-
options
|
188
187
|
end
|
189
188
|
end
|
190
189
|
end
|
data/lib/action_view/template.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 8.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 8.0.0.beta1
|
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:
|
26
|
+
version: 8.0.0.beta1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: builder
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,28 +86,28 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 8.0.0.beta1
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 8.0.0.beta1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: activemodel
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 8.0.0.beta1
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 8.0.0.beta1
|
111
111
|
description: Simple, battle-tested conventions and helpers for building web pages.
|
112
112
|
email: david@loudthinking.com
|
113
113
|
executables: []
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- lib/action_view/dependency_tracker.rb
|
128
128
|
- lib/action_view/dependency_tracker/erb_tracker.rb
|
129
129
|
- lib/action_view/dependency_tracker/ruby_tracker.rb
|
130
|
+
- lib/action_view/dependency_tracker/wildcard_resolver.rb
|
130
131
|
- lib/action_view/deprecator.rb
|
131
132
|
- lib/action_view/digestor.rb
|
132
133
|
- lib/action_view/flows.rb
|
@@ -246,12 +247,12 @@ licenses:
|
|
246
247
|
- MIT
|
247
248
|
metadata:
|
248
249
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
249
|
-
changelog_uri: https://github.com/rails/rails/blob/
|
250
|
-
documentation_uri: https://api.rubyonrails.org/
|
250
|
+
changelog_uri: https://github.com/rails/rails/blob/v8.0.0.beta1/actionview/CHANGELOG.md
|
251
|
+
documentation_uri: https://api.rubyonrails.org/v8.0.0.beta1/
|
251
252
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
252
|
-
source_code_uri: https://github.com/rails/rails/tree/
|
253
|
+
source_code_uri: https://github.com/rails/rails/tree/v8.0.0.beta1/actionview
|
253
254
|
rubygems_mfa_required: 'true'
|
254
|
-
post_install_message:
|
255
|
+
post_install_message:
|
255
256
|
rdoc_options: []
|
256
257
|
require_paths:
|
257
258
|
- lib
|
@@ -259,7 +260,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
259
260
|
requirements:
|
260
261
|
- - ">="
|
261
262
|
- !ruby/object:Gem::Version
|
262
|
-
version: 3.
|
263
|
+
version: 3.2.0
|
263
264
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
264
265
|
requirements:
|
265
266
|
- - ">="
|
@@ -267,8 +268,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
267
268
|
version: '0'
|
268
269
|
requirements:
|
269
270
|
- none
|
270
|
-
rubygems_version: 3.5.
|
271
|
-
signing_key:
|
271
|
+
rubygems_version: 3.5.16
|
272
|
+
signing_key:
|
272
273
|
specification_version: 4
|
273
274
|
summary: Rendering framework putting the V in MVC (part of Rails).
|
274
275
|
test_files: []
|