actionview 5.2.4.1 → 6.0.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of actionview might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +193 -79
- data/MIT-LICENSE +1 -1
- data/README.rdoc +4 -2
- data/lib/action_view.rb +3 -2
- data/lib/action_view/base.rb +107 -10
- data/lib/action_view/buffers.rb +15 -0
- data/lib/action_view/cache_expiry.rb +54 -0
- data/lib/action_view/context.rb +5 -9
- data/lib/action_view/digestor.rb +12 -20
- data/lib/action_view/gem_version.rb +4 -4
- data/lib/action_view/helpers.rb +0 -2
- data/lib/action_view/helpers/asset_tag_helper.rb +7 -30
- data/lib/action_view/helpers/asset_url_helper.rb +4 -3
- data/lib/action_view/helpers/cache_helper.rb +18 -10
- data/lib/action_view/helpers/capture_helper.rb +4 -0
- data/lib/action_view/helpers/csp_helper.rb +4 -2
- data/lib/action_view/helpers/csrf_helper.rb +1 -1
- data/lib/action_view/helpers/date_helper.rb +69 -25
- data/lib/action_view/helpers/form_helper.rb +238 -6
- data/lib/action_view/helpers/form_options_helper.rb +27 -18
- data/lib/action_view/helpers/form_tag_helper.rb +12 -9
- data/lib/action_view/helpers/javascript_helper.rb +9 -8
- data/lib/action_view/helpers/number_helper.rb +5 -0
- data/lib/action_view/helpers/output_safety_helper.rb +1 -1
- data/lib/action_view/helpers/rendering_helper.rb +6 -4
- data/lib/action_view/helpers/sanitize_helper.rb +12 -18
- data/lib/action_view/helpers/tag_helper.rb +7 -6
- data/lib/action_view/helpers/tags/base.rb +9 -5
- data/lib/action_view/helpers/tags/color_field.rb +1 -1
- data/lib/action_view/helpers/tags/translator.rb +1 -6
- data/lib/action_view/helpers/text_helper.rb +3 -3
- data/lib/action_view/helpers/translation_helper.rb +16 -12
- data/lib/action_view/helpers/url_helper.rb +14 -14
- data/lib/action_view/layouts.rb +5 -5
- data/lib/action_view/log_subscriber.rb +6 -6
- data/lib/action_view/lookup_context.rb +73 -31
- data/lib/action_view/path_set.rb +5 -10
- data/lib/action_view/railtie.rb +24 -1
- data/lib/action_view/record_identifier.rb +2 -2
- data/lib/action_view/renderer/abstract_renderer.rb +56 -3
- data/lib/action_view/renderer/partial_renderer.rb +66 -55
- data/lib/action_view/renderer/partial_renderer/collection_caching.rb +62 -16
- data/lib/action_view/renderer/renderer.rb +16 -4
- data/lib/action_view/renderer/streaming_template_renderer.rb +5 -5
- data/lib/action_view/renderer/template_renderer.rb +24 -18
- data/lib/action_view/rendering.rb +51 -31
- data/lib/action_view/routing_url_for.rb +12 -11
- data/lib/action_view/template.rb +102 -70
- data/lib/action_view/template/error.rb +21 -1
- data/lib/action_view/template/handlers.rb +27 -1
- data/lib/action_view/template/handlers/builder.rb +2 -2
- data/lib/action_view/template/handlers/erb.rb +17 -7
- data/lib/action_view/template/handlers/erb/erubi.rb +7 -3
- data/lib/action_view/template/handlers/html.rb +1 -1
- data/lib/action_view/template/handlers/raw.rb +2 -2
- data/lib/action_view/template/html.rb +14 -5
- data/lib/action_view/template/inline.rb +22 -0
- data/lib/action_view/template/raw_file.rb +28 -0
- data/lib/action_view/template/resolver.rb +136 -133
- data/lib/action_view/template/sources.rb +13 -0
- data/lib/action_view/template/sources/file.rb +17 -0
- data/lib/action_view/template/text.rb +5 -3
- data/lib/action_view/test_case.rb +1 -1
- data/lib/action_view/testing/resolvers.rb +33 -20
- data/lib/action_view/unbound_template.rb +32 -0
- data/lib/action_view/view_paths.rb +25 -1
- data/lib/assets/compiled/rails-ujs.js +29 -3
- metadata +25 -17
- data/lib/action_view/helpers/record_tag_helper.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9777ca123ed323ec9aed53466704bca99ff4db362d77ff5bcfec5ce47e3cec44
|
4
|
+
data.tar.gz: d77556ede8e3975c64d15456b07287ed55dcef6a13a451c73d4b51a8c071011c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa8c970c1009cd6c8f816fa5837ad2ae8a200d8053797c9a2391a0558c9ceeefd5aacfc7459dee9f2aa67c9811b59a193abf3c5f53fa1d836e02e9a5e7e1fdcb
|
7
|
+
data.tar.gz: c3197571913396be49933f59f6ab5020bbe53d289dacb88e9630d8e583f0d27a3c445d99343d44a84f6e2dad33572217b66f03f73263974b3cf78363d1d92bf5
|
data/CHANGELOG.md
CHANGED
@@ -1,32 +1,51 @@
|
|
1
|
-
## Rails
|
1
|
+
## Rails 6.0.1 (November 5, 2019) ##
|
2
2
|
|
3
|
-
*
|
3
|
+
* UJS avoids `Element.closest()` for IE 9 compatibility.
|
4
4
|
|
5
|
+
*George Claghorn*
|
5
6
|
|
6
|
-
## Rails 5.2.4 (November 27, 2019) ##
|
7
7
|
|
8
|
-
|
9
|
-
Programmatic click events (eg. ones generated by `Rails.fire(link, "click")`) don't specify a button. These events were being incorrectly stopped by code meant to ignore scroll wheel and right clicks introduced in #34573.
|
8
|
+
## Rails 6.0.0 (August 16, 2019) ##
|
10
9
|
|
11
|
-
|
10
|
+
* ActionView::Helpers::SanitizeHelper: support rails-html-sanitizer 1.1.0.
|
12
11
|
|
12
|
+
*Juanito Fatas*
|
13
13
|
|
14
|
-
## Rails 5.2.3 (March 27, 2019) ##
|
15
14
|
|
16
|
-
|
17
|
-
Firefox fires click events even if the click was triggered by non-primary mouse keys such as right- or scroll-wheel-clicks.
|
18
|
-
For example, right-clicking a link such as the one described below (with an underlying ajax request registered on click) should not cause that request to occur.
|
15
|
+
## Rails 6.0.0.rc2 (July 22, 2019) ##
|
19
16
|
|
20
|
-
|
21
|
-
<%= link_to 'Remote', remote_path, class: 'remote', remote: true, data: { type: :json } %>
|
22
|
-
```
|
17
|
+
* Fix `select_tag` so that it doesn't change `options` when `include_blank` is present.
|
23
18
|
|
24
|
-
|
19
|
+
*Younes SERRAJ*
|
25
20
|
|
26
|
-
*Wolfgang Hobmaier*
|
27
21
|
|
22
|
+
## Rails 6.0.0.rc1 (April 24, 2019) ##
|
23
|
+
|
24
|
+
* Fix partial caching skips same item issue
|
25
|
+
|
26
|
+
If we render cached collection partials with repeated items, those repeated items
|
27
|
+
will get skipped. For example, if you have 5 identical items in your collection, Rails
|
28
|
+
only renders the first one when `cached` is set to true. But it should render all
|
29
|
+
5 items instead.
|
30
|
+
|
31
|
+
Fixes #35114.
|
32
|
+
|
33
|
+
*Stan Lo*
|
28
34
|
|
29
|
-
|
35
|
+
* Only clear ActionView cache in development on file changes
|
36
|
+
|
37
|
+
To speed up development mode, view caches are only cleared when files in
|
38
|
+
the view paths have changed. Applications which have implemented custom
|
39
|
+
`ActionView::Resolver` subclasses may need to add their own cache clearing.
|
40
|
+
|
41
|
+
*John Hawthorn*
|
42
|
+
|
43
|
+
* Fix `ActionView::FixtureResolver` so that it handles template variants correctly.
|
44
|
+
|
45
|
+
*Edward Rudd*
|
46
|
+
|
47
|
+
|
48
|
+
## Rails 6.0.0.beta3 (March 11, 2019) ##
|
30
49
|
|
31
50
|
* Only accept formats from registered mime types
|
32
51
|
|
@@ -40,22 +59,104 @@
|
|
40
59
|
*John Hawthorn*, *Eileen M. Uchitelle*, *Aaron Patterson*
|
41
60
|
|
42
61
|
|
43
|
-
## Rails
|
62
|
+
## Rails 6.0.0.beta2 (February 25, 2019) ##
|
63
|
+
|
64
|
+
* `ActionView::Template.finalize_compiled_template_methods` is deprecated with
|
65
|
+
no replacement.
|
66
|
+
|
67
|
+
*tenderlove*
|
68
|
+
|
69
|
+
* `config.action_view.finalize_compiled_template_methods` is deprecated with
|
70
|
+
no replacement.
|
71
|
+
|
72
|
+
*tenderlove*
|
73
|
+
|
74
|
+
* Ensure unique DOM IDs for collection inputs with float values.
|
75
|
+
|
76
|
+
Fixes #34974.
|
77
|
+
|
78
|
+
*Mark Edmondson*
|
79
|
+
|
80
|
+
|
81
|
+
## Rails 6.0.0.beta1 (January 18, 2019) ##
|
82
|
+
|
83
|
+
* [Rename npm package](https://github.com/rails/rails/pull/34905) from
|
84
|
+
[`rails-ujs`](https://www.npmjs.com/package/rails-ujs) to
|
85
|
+
[`@rails/ujs`](https://www.npmjs.com/package/@rails/ujs).
|
86
|
+
|
87
|
+
*Javan Makhmali*
|
88
|
+
|
89
|
+
* Remove deprecated `image_alt` helper.
|
90
|
+
|
91
|
+
*Rafael Mendonça França*
|
92
|
+
|
93
|
+
* Fix the need of `#protect_against_forgery?` method defined in
|
94
|
+
`ActionView::Base` subclasses. This prevents the use of forms and buttons.
|
95
|
+
|
96
|
+
*Genadi Samokovarov*
|
97
|
+
|
98
|
+
* Fix UJS permanently showing disabled text in a[data-remote][data-disable-with] elements within forms.
|
99
|
+
|
100
|
+
Fixes #33889.
|
101
|
+
|
102
|
+
*Wolfgang Hobmaier*
|
103
|
+
|
104
|
+
* Prevent non-primary mouse keys from triggering Rails UJS click handlers.
|
105
|
+
Firefox fires click events even if the click was triggered by non-primary mouse keys such as right- or scroll-wheel-clicks.
|
106
|
+
For example, right-clicking a link such as the one described below (with an underlying ajax request registered on click) should not cause that request to occur.
|
107
|
+
|
108
|
+
```
|
109
|
+
<%= link_to 'Remote', remote_path, class: 'remote', remote: true, data: { type: :json } %>
|
110
|
+
```
|
111
|
+
|
112
|
+
Fixes #34541.
|
44
113
|
|
45
|
-
*
|
114
|
+
*Wolfgang Hobmaier*
|
46
115
|
|
116
|
+
* Prevent `ActionView::TextHelper#word_wrap` from unexpectedly stripping white space from the _left_ side of lines.
|
47
117
|
|
48
|
-
|
118
|
+
For example, given input like this:
|
49
119
|
|
50
|
-
|
120
|
+
```
|
121
|
+
This is a paragraph with an initial indent,
|
122
|
+
followed by additional lines that are not indented,
|
123
|
+
and finally terminated with a blockquote:
|
124
|
+
"A pithy saying"
|
125
|
+
```
|
126
|
+
|
127
|
+
Calling `word_wrap` should not trim the indents on the first and last lines.
|
128
|
+
|
129
|
+
Fixes #34487.
|
51
130
|
|
131
|
+
*Lyle Mullican*
|
52
132
|
|
53
|
-
|
133
|
+
* Add allocations to template rendering instrumentation.
|
54
134
|
|
55
|
-
|
56
|
-
to HTML attributes.
|
135
|
+
Adds the allocations for template and partial rendering to the server output on render.
|
57
136
|
|
58
|
-
|
137
|
+
```
|
138
|
+
Rendered posts/_form.html.erb (Duration: 7.1ms | Allocations: 6004)
|
139
|
+
Rendered posts/new.html.erb within layouts/application (Duration: 8.3ms | Allocations: 6654)
|
140
|
+
Completed 200 OK in 858ms (Views: 848.4ms | ActiveRecord: 0.4ms | Allocations: 1539564)
|
141
|
+
```
|
142
|
+
|
143
|
+
*Eileen M. Uchitelle*, *Aaron Patterson*
|
144
|
+
|
145
|
+
* Respect the `only_path` option passed to `url_for` when the options are passed in as an array
|
146
|
+
|
147
|
+
Fixes #33237.
|
148
|
+
|
149
|
+
*Joel Ambass*
|
150
|
+
|
151
|
+
* Deprecate calling private model methods from view helpers.
|
152
|
+
|
153
|
+
For example, in methods like `options_from_collection_for_select`
|
154
|
+
and `collection_select` it is possible to call private methods from
|
155
|
+
the objects used.
|
156
|
+
|
157
|
+
Fixes #33546.
|
158
|
+
|
159
|
+
*Ana María Martínez Gómez*
|
59
160
|
|
60
161
|
* Fix issue with `button_to`'s `to_form_params`
|
61
162
|
|
@@ -68,97 +169,110 @@
|
|
68
169
|
|
69
170
|
*Georgi Georgiev*
|
70
171
|
|
71
|
-
*
|
72
|
-
Content Security Policy.
|
73
|
-
|
74
|
-
Fixes #32577.
|
172
|
+
* Mark arrays of translations as trusted safe by using the `_html` suffix.
|
75
173
|
|
76
|
-
|
174
|
+
Example:
|
77
175
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
176
|
+
en:
|
177
|
+
foo_html:
|
178
|
+
- "One"
|
179
|
+
- "<strong>Two</strong>"
|
180
|
+
- "Three 👋 🙂"
|
83
181
|
|
182
|
+
*Juan Broullon*
|
84
183
|
|
85
|
-
|
184
|
+
* Add `year_format` option to date_select tag. This option makes it possible to customize year
|
185
|
+
names. Lambda should be passed to use this option.
|
86
186
|
|
87
|
-
|
187
|
+
Example:
|
88
188
|
|
89
|
-
|
189
|
+
date_select('user_birthday', '', start_year: 1998, end_year: 2000, year_format: ->year { "Heisei #{year - 1988}" })
|
90
190
|
|
91
|
-
|
191
|
+
The HTML produced:
|
92
192
|
|
93
|
-
|
193
|
+
<select id="user_birthday__1i" name="user_birthday[(1i)]">
|
194
|
+
<option value="1998">Heisei 10</option>
|
195
|
+
<option value="1999">Heisei 11</option>
|
196
|
+
<option value="2000">Heisei 12</option>
|
197
|
+
</select>
|
198
|
+
/* The rest is omitted */
|
94
199
|
|
95
|
-
|
96
|
-
handle method names as `group_method` and `group_label_method` parameters,
|
97
|
-
it is now able to receive procs and other callable objects too.
|
200
|
+
*Koki Ryu*
|
98
201
|
|
99
|
-
|
100
|
-
|
101
|
-
* Add `preload_link_tag` helper.
|
202
|
+
* Fix JavaScript views rendering does not work with Firefox when using
|
203
|
+
Content Security Policy.
|
102
204
|
|
103
|
-
|
104
|
-
(different to the specified in `javascript_include_tag` and `stylesheet_link_tag`).
|
105
|
-
Additionally, this sends Early Hints if supported by browser.
|
205
|
+
Fixes #32577.
|
106
206
|
|
107
|
-
*
|
207
|
+
*Yuji Yaginuma*
|
108
208
|
|
109
|
-
*
|
209
|
+
* Add the `nonce: true` option for `javascript_include_tag` helper to
|
210
|
+
support automatic nonce generation for Content Security Policy.
|
211
|
+
Works the same way as `javascript_tag nonce: true` does.
|
110
212
|
|
111
|
-
|
112
|
-
that was enabled in `form_for`. This usually is not an good idea since labels don't work
|
113
|
-
when the input doesn't have an id and it made harder to test with Capybara.
|
213
|
+
*Yaroslav Markin*
|
114
214
|
|
115
|
-
|
116
|
-
to `false.`
|
215
|
+
* Remove `ActionView::Helpers::RecordTagHelper`.
|
117
216
|
|
118
|
-
*
|
217
|
+
*Yoshiyuki Hirano*
|
119
218
|
|
120
|
-
*
|
219
|
+
* Disable `ActionView::Template` finalizers in test environment.
|
121
220
|
|
122
|
-
|
221
|
+
Template finalization can be expensive in large view test suites.
|
222
|
+
Add a configuration option,
|
223
|
+
`action_view.finalize_compiled_template_methods`, and turn it off in
|
224
|
+
the test environment.
|
123
225
|
|
124
|
-
*
|
226
|
+
*Simon Coffey*
|
125
227
|
|
126
|
-
*
|
228
|
+
* Extract the `confirm` call in its own, overridable method in `rails_ujs`.
|
127
229
|
|
128
|
-
|
230
|
+
Example:
|
129
231
|
|
130
|
-
|
232
|
+
Rails.confirm = function(message, element) {
|
233
|
+
return (my_bootstrap_modal_confirm(message));
|
234
|
+
}
|
131
235
|
|
132
|
-
|
236
|
+
*Mathieu Mahé*
|
133
237
|
|
134
|
-
|
238
|
+
* Enable select tag helper to mark `prompt` option as `selected` and/or `disabled` for `required`
|
239
|
+
field.
|
135
240
|
|
136
|
-
|
241
|
+
Example:
|
137
242
|
|
138
|
-
|
243
|
+
select :post,
|
244
|
+
:category,
|
245
|
+
["lifestyle", "programming", "spiritual"],
|
246
|
+
{ selected: "", disabled: "", prompt: "Choose one" },
|
247
|
+
{ required: true }
|
139
248
|
|
140
|
-
|
249
|
+
Placeholder option would be selected and disabled.
|
141
250
|
|
142
|
-
|
251
|
+
The HTML produced:
|
143
252
|
|
144
|
-
|
253
|
+
<select required="required" name="post[category]" id="post_category">
|
254
|
+
<option disabled="disabled" selected="selected" value="">Choose one</option>
|
255
|
+
<option value="lifestyle">lifestyle</option>
|
256
|
+
<option value="programming">programming</option>
|
257
|
+
<option value="spiritual">spiritual</option></select>
|
145
258
|
|
146
|
-
*
|
259
|
+
*Sergey Prikhodko*
|
147
260
|
|
148
|
-
|
261
|
+
* Don't enforce UTF-8 by default.
|
149
262
|
|
150
|
-
|
263
|
+
With the disabling of TLS 1.0 by most major websites, continuing to run
|
264
|
+
IE8 or lower becomes increasingly difficult so default to not enforcing
|
265
|
+
UTF-8 encoding as it's not relevant to other browsers.
|
151
266
|
|
152
|
-
*
|
267
|
+
*Andrew White*
|
153
268
|
|
154
|
-
*
|
269
|
+
* Change translation key of `submit_tag` from `module_name_class_name` to `module_name/class_name`.
|
155
270
|
|
156
|
-
*
|
271
|
+
*Rui Onodera*
|
157
272
|
|
158
|
-
*
|
159
|
-
for bad input.
|
273
|
+
* Rails 6 requires Ruby 2.5.0 or newer.
|
160
274
|
|
161
|
-
*
|
275
|
+
*Jeremy Daer*, *Kasper Timm Hansen*
|
162
276
|
|
163
277
|
|
164
|
-
Please check [5-
|
278
|
+
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/actionview/CHANGELOG.md) for previous changes.
|
data/MIT-LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -5,6 +5,8 @@ view helpers that assist when building HTML forms, Atom feeds and more.
|
|
5
5
|
Template formats that Action View handles are ERB (embedded Ruby, typically
|
6
6
|
used to inline short Ruby snippets inside HTML), and XML Builder.
|
7
7
|
|
8
|
+
You can read more about Action View in the {Action View Overview}[https://edgeguides.rubyonrails.org/action_view_overview.html] guide.
|
9
|
+
|
8
10
|
== Download and installation
|
9
11
|
|
10
12
|
The latest version of Action View can be installed with RubyGems:
|
@@ -13,7 +15,7 @@ The latest version of Action View can be installed with RubyGems:
|
|
13
15
|
|
14
16
|
Source code can be downloaded as part of the Rails project on GitHub:
|
15
17
|
|
16
|
-
* https://github.com/rails/rails/tree/
|
18
|
+
* https://github.com/rails/rails/tree/master/actionview
|
17
19
|
|
18
20
|
|
19
21
|
== License
|
@@ -27,7 +29,7 @@ Action View is released under the MIT license:
|
|
27
29
|
|
28
30
|
API documentation is at
|
29
31
|
|
30
|
-
*
|
32
|
+
* https://api.rubyonrails.org
|
31
33
|
|
32
34
|
Bug reports for the Ruby on Rails project can be filed here:
|
33
35
|
|
data/lib/action_view.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
#--
|
4
|
-
# Copyright (c) 2004-
|
4
|
+
# Copyright (c) 2004-2019 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
|
@@ -35,7 +35,6 @@ module ActionView
|
|
35
35
|
eager_autoload do
|
36
36
|
autoload :Base
|
37
37
|
autoload :Context
|
38
|
-
autoload :CompiledTemplates, "action_view/context"
|
39
38
|
autoload :Digestor
|
40
39
|
autoload :Helpers
|
41
40
|
autoload :LookupContext
|
@@ -45,6 +44,7 @@ module ActionView
|
|
45
44
|
autoload :Rendering
|
46
45
|
autoload :RoutingUrlFor
|
47
46
|
autoload :Template
|
47
|
+
autoload :UnboundTemplate
|
48
48
|
autoload :ViewPaths
|
49
49
|
|
50
50
|
autoload_under "renderer" do
|
@@ -81,6 +81,7 @@ module ActionView
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
autoload :CacheExpiry
|
84
85
|
autoload :TestCase
|
85
86
|
|
86
87
|
def self.eager_load!
|
data/lib/action_view/base.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require "active_support/core_ext/module/attr_internal"
|
4
4
|
require "active_support/core_ext/module/attribute_accessors"
|
5
5
|
require "active_support/ordered_options"
|
6
|
+
require "active_support/deprecation"
|
6
7
|
require "action_view/log_subscriber"
|
7
8
|
require "action_view/helpers"
|
8
9
|
require "action_view/context"
|
@@ -179,37 +180,133 @@ module ActionView #:nodoc:
|
|
179
180
|
def xss_safe? #:nodoc:
|
180
181
|
true
|
181
182
|
end
|
183
|
+
|
184
|
+
def with_empty_template_cache # :nodoc:
|
185
|
+
subclass = Class.new(self) {
|
186
|
+
# We can't implement these as self.class because subclasses will
|
187
|
+
# share the same template cache as superclasses, so "changed?" won't work
|
188
|
+
# correctly.
|
189
|
+
define_method(:compiled_method_container) { subclass }
|
190
|
+
define_singleton_method(:compiled_method_container) { subclass }
|
191
|
+
}
|
192
|
+
end
|
193
|
+
|
194
|
+
def changed?(other) # :nodoc:
|
195
|
+
compiled_method_container != other.compiled_method_container
|
196
|
+
end
|
182
197
|
end
|
183
198
|
|
184
|
-
|
199
|
+
attr_reader :view_renderer, :lookup_context
|
185
200
|
attr_internal :config, :assigns
|
186
201
|
|
187
|
-
delegate :lookup_context, to: :view_renderer
|
188
202
|
delegate :formats, :formats=, :locale, :locale=, :view_paths, :view_paths=, to: :lookup_context
|
189
203
|
|
190
204
|
def assign(new_assigns) # :nodoc:
|
191
205
|
@_assigns = new_assigns.each { |key, value| instance_variable_set("@#{key}", value) }
|
192
206
|
end
|
193
207
|
|
194
|
-
|
208
|
+
# :stopdoc:
|
209
|
+
|
210
|
+
def self.build_lookup_context(context)
|
211
|
+
case context
|
212
|
+
when ActionView::Renderer
|
213
|
+
context.lookup_context
|
214
|
+
when Array
|
215
|
+
ActionView::LookupContext.new(context)
|
216
|
+
when ActionView::PathSet
|
217
|
+
ActionView::LookupContext.new(context)
|
218
|
+
when nil
|
219
|
+
ActionView::LookupContext.new([])
|
220
|
+
else
|
221
|
+
raise NotImplementedError, context.class.name
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
def self.empty
|
226
|
+
with_view_paths([])
|
227
|
+
end
|
228
|
+
|
229
|
+
def self.with_view_paths(view_paths, assigns = {}, controller = nil)
|
230
|
+
with_context ActionView::LookupContext.new(view_paths), assigns, controller
|
231
|
+
end
|
232
|
+
|
233
|
+
def self.with_context(context, assigns = {}, controller = nil)
|
234
|
+
new context, assigns, controller
|
235
|
+
end
|
236
|
+
|
237
|
+
NULL = Object.new
|
238
|
+
|
239
|
+
# :startdoc:
|
240
|
+
|
241
|
+
def initialize(lookup_context = nil, assigns = {}, controller = nil, formats = NULL) #:nodoc:
|
195
242
|
@_config = ActiveSupport::InheritableOptions.new
|
196
243
|
|
197
|
-
|
198
|
-
|
244
|
+
unless formats == NULL
|
245
|
+
ActiveSupport::Deprecation.warn <<~eowarn.squish
|
246
|
+
Passing formats to ActionView::Base.new is deprecated
|
247
|
+
eowarn
|
248
|
+
end
|
249
|
+
|
250
|
+
case lookup_context
|
251
|
+
when ActionView::LookupContext
|
252
|
+
@lookup_context = lookup_context
|
199
253
|
else
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
@
|
254
|
+
ActiveSupport::Deprecation.warn <<~eowarn.squish
|
255
|
+
ActionView::Base instances should be constructed with a lookup context,
|
256
|
+
assignments, and a controller.
|
257
|
+
eowarn
|
258
|
+
@lookup_context = self.class.build_lookup_context(lookup_context)
|
205
259
|
end
|
206
260
|
|
261
|
+
@view_renderer = ActionView::Renderer.new @lookup_context
|
262
|
+
@current_template = nil
|
263
|
+
|
207
264
|
@cache_hit = {}
|
208
265
|
assign(assigns)
|
209
266
|
assign_controller(controller)
|
210
267
|
_prepare_context
|
211
268
|
end
|
212
269
|
|
270
|
+
def _run(method, template, locals, buffer, &block)
|
271
|
+
_old_output_buffer, _old_virtual_path, _old_template = @output_buffer, @virtual_path, @current_template
|
272
|
+
@current_template = template
|
273
|
+
@output_buffer = buffer
|
274
|
+
send(method, locals, buffer, &block)
|
275
|
+
ensure
|
276
|
+
@output_buffer, @virtual_path, @current_template = _old_output_buffer, _old_virtual_path, _old_template
|
277
|
+
end
|
278
|
+
|
279
|
+
def compiled_method_container
|
280
|
+
if self.class == ActionView::Base
|
281
|
+
ActiveSupport::Deprecation.warn <<~eowarn.squish
|
282
|
+
ActionView::Base instances must implement `compiled_method_container`
|
283
|
+
or use the class method `with_empty_template_cache` for constructing
|
284
|
+
an ActionView::Base instances that has an empty cache.
|
285
|
+
eowarn
|
286
|
+
end
|
287
|
+
|
288
|
+
self.class
|
289
|
+
end
|
290
|
+
|
291
|
+
def in_rendering_context(options)
|
292
|
+
old_view_renderer = @view_renderer
|
293
|
+
old_lookup_context = @lookup_context
|
294
|
+
|
295
|
+
if !lookup_context.html_fallback_for_js && options[:formats]
|
296
|
+
formats = Array(options[:formats])
|
297
|
+
if formats == [:js]
|
298
|
+
formats << :html
|
299
|
+
end
|
300
|
+
@lookup_context = lookup_context.with_prepended_formats(formats)
|
301
|
+
@view_renderer = ActionView::Renderer.new @lookup_context
|
302
|
+
end
|
303
|
+
|
304
|
+
yield @view_renderer
|
305
|
+
ensure
|
306
|
+
@view_renderer = old_view_renderer
|
307
|
+
@lookup_context = old_lookup_context
|
308
|
+
end
|
309
|
+
|
213
310
|
ActiveSupport.run_load_hooks(:action_view, self)
|
214
311
|
end
|
215
312
|
end
|