actionview 5.2.3 → 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 +203 -67
- 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 +3 -3
- 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 +240 -8
- data/lib/action_view/helpers/form_options_helper.rb +27 -18
- data/lib/action_view/helpers/form_tag_helper.rb +14 -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 +15 -15
- 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 +33 -7
- metadata +26 -18
- 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,4 +1,105 @@
|
|
1
|
-
## Rails
|
1
|
+
## Rails 6.0.1 (November 5, 2019) ##
|
2
|
+
|
3
|
+
* UJS avoids `Element.closest()` for IE 9 compatibility.
|
4
|
+
|
5
|
+
*George Claghorn*
|
6
|
+
|
7
|
+
|
8
|
+
## Rails 6.0.0 (August 16, 2019) ##
|
9
|
+
|
10
|
+
* ActionView::Helpers::SanitizeHelper: support rails-html-sanitizer 1.1.0.
|
11
|
+
|
12
|
+
*Juanito Fatas*
|
13
|
+
|
14
|
+
|
15
|
+
## Rails 6.0.0.rc2 (July 22, 2019) ##
|
16
|
+
|
17
|
+
* Fix `select_tag` so that it doesn't change `options` when `include_blank` is present.
|
18
|
+
|
19
|
+
*Younes SERRAJ*
|
20
|
+
|
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*
|
34
|
+
|
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) ##
|
49
|
+
|
50
|
+
* Only accept formats from registered mime types
|
51
|
+
|
52
|
+
A lack of filtering on mime types could allow an attacker to read
|
53
|
+
arbitrary files on the target server or to perform a denial of service
|
54
|
+
attack.
|
55
|
+
|
56
|
+
Fixes CVE-2019-5418
|
57
|
+
Fixes CVE-2019-5419
|
58
|
+
|
59
|
+
*John Hawthorn*, *Eileen M. Uchitelle*, *Aaron Patterson*
|
60
|
+
|
61
|
+
|
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*
|
2
103
|
|
3
104
|
* Prevent non-primary mouse keys from triggering Rails UJS click handlers.
|
4
105
|
Firefox fires click events even if the click was triggered by non-primary mouse keys such as right- or scroll-wheel-clicks.
|
@@ -8,32 +109,54 @@
|
|
8
109
|
<%= link_to 'Remote', remote_path, class: 'remote', remote: true, data: { type: :json } %>
|
9
110
|
```
|
10
111
|
|
11
|
-
Fixes #34541
|
112
|
+
Fixes #34541.
|
12
113
|
|
13
114
|
*Wolfgang Hobmaier*
|
14
115
|
|
116
|
+
* Prevent `ActionView::TextHelper#word_wrap` from unexpectedly stripping white space from the _left_ side of lines.
|
117
|
+
|
118
|
+
For example, given input like this:
|
15
119
|
|
16
|
-
|
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.
|
130
|
+
|
131
|
+
*Lyle Mullican*
|
17
132
|
|
18
|
-
*
|
133
|
+
* Add allocations to template rendering instrumentation.
|
19
134
|
|
135
|
+
Adds the allocations for template and partial rendering to the server output on render.
|
20
136
|
|
21
|
-
|
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
|
+
```
|
22
142
|
|
23
|
-
*
|
143
|
+
*Eileen M. Uchitelle*, *Aaron Patterson*
|
24
144
|
|
145
|
+
* Respect the `only_path` option passed to `url_for` when the options are passed in as an array
|
25
146
|
|
26
|
-
|
147
|
+
Fixes #33237.
|
27
148
|
|
28
|
-
*
|
149
|
+
*Joel Ambass*
|
29
150
|
|
151
|
+
* Deprecate calling private model methods from view helpers.
|
30
152
|
|
31
|
-
|
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.
|
32
156
|
|
33
|
-
|
34
|
-
to HTML attributes.
|
157
|
+
Fixes #33546.
|
35
158
|
|
36
|
-
*
|
159
|
+
*Ana María Martínez Gómez*
|
37
160
|
|
38
161
|
* Fix issue with `button_to`'s `to_form_params`
|
39
162
|
|
@@ -46,97 +169,110 @@
|
|
46
169
|
|
47
170
|
*Georgi Georgiev*
|
48
171
|
|
49
|
-
*
|
50
|
-
Content Security Policy.
|
51
|
-
|
52
|
-
Fixes #32577.
|
53
|
-
|
54
|
-
*Yuji Yaginuma*
|
55
|
-
|
56
|
-
* Add the `nonce: true` option for `javascript_include_tag` helper to
|
57
|
-
support automatic nonce generation for Content Security Policy.
|
58
|
-
Works the same way as `javascript_tag nonce: true` does.
|
172
|
+
* Mark arrays of translations as trusted safe by using the `_html` suffix.
|
59
173
|
|
60
|
-
|
174
|
+
Example:
|
61
175
|
|
176
|
+
en:
|
177
|
+
foo_html:
|
178
|
+
- "One"
|
179
|
+
- "<strong>Two</strong>"
|
180
|
+
- "Three 👋 🙂"
|
62
181
|
|
63
|
-
|
182
|
+
*Juan Broullon*
|
64
183
|
|
65
|
-
*
|
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.
|
66
186
|
|
67
|
-
|
187
|
+
Example:
|
68
188
|
|
69
|
-
|
189
|
+
date_select('user_birthday', '', start_year: 1998, end_year: 2000, year_format: ->year { "Heisei #{year - 1988}" })
|
70
190
|
|
71
|
-
|
191
|
+
The HTML produced:
|
72
192
|
|
73
|
-
|
74
|
-
|
75
|
-
|
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 */
|
76
199
|
|
77
|
-
*
|
200
|
+
*Koki Ryu*
|
78
201
|
|
79
|
-
*
|
202
|
+
* Fix JavaScript views rendering does not work with Firefox when using
|
203
|
+
Content Security Policy.
|
80
204
|
|
81
|
-
|
82
|
-
(different to the specified in `javascript_include_tag` and `stylesheet_link_tag`).
|
83
|
-
Additionally, this sends Early Hints if supported by browser.
|
205
|
+
Fixes #32577.
|
84
206
|
|
85
|
-
*
|
207
|
+
*Yuji Yaginuma*
|
86
208
|
|
87
|
-
*
|
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.
|
88
212
|
|
89
|
-
|
90
|
-
that was enabled in `form_for`. This usually is not an good idea since labels don't work
|
91
|
-
when the input doesn't have an id and it made harder to test with Capybara.
|
213
|
+
*Yaroslav Markin*
|
92
214
|
|
93
|
-
|
94
|
-
to `false.`
|
215
|
+
* Remove `ActionView::Helpers::RecordTagHelper`.
|
95
216
|
|
96
|
-
*
|
217
|
+
*Yoshiyuki Hirano*
|
97
218
|
|
98
|
-
*
|
219
|
+
* Disable `ActionView::Template` finalizers in test environment.
|
99
220
|
|
100
|
-
|
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.
|
101
225
|
|
102
|
-
*
|
226
|
+
*Simon Coffey*
|
103
227
|
|
104
|
-
*
|
228
|
+
* Extract the `confirm` call in its own, overridable method in `rails_ujs`.
|
105
229
|
|
106
|
-
|
230
|
+
Example:
|
107
231
|
|
108
|
-
|
232
|
+
Rails.confirm = function(message, element) {
|
233
|
+
return (my_bootstrap_modal_confirm(message));
|
234
|
+
}
|
109
235
|
|
110
|
-
|
236
|
+
*Mathieu Mahé*
|
111
237
|
|
112
|
-
|
238
|
+
* Enable select tag helper to mark `prompt` option as `selected` and/or `disabled` for `required`
|
239
|
+
field.
|
113
240
|
|
114
|
-
|
241
|
+
Example:
|
115
242
|
|
116
|
-
|
243
|
+
select :post,
|
244
|
+
:category,
|
245
|
+
["lifestyle", "programming", "spiritual"],
|
246
|
+
{ selected: "", disabled: "", prompt: "Choose one" },
|
247
|
+
{ required: true }
|
117
248
|
|
118
|
-
|
249
|
+
Placeholder option would be selected and disabled.
|
119
250
|
|
120
|
-
|
251
|
+
The HTML produced:
|
121
252
|
|
122
|
-
|
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>
|
123
258
|
|
124
|
-
*
|
259
|
+
*Sergey Prikhodko*
|
125
260
|
|
126
|
-
|
261
|
+
* Don't enforce UTF-8 by default.
|
127
262
|
|
128
|
-
|
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.
|
129
266
|
|
130
|
-
*
|
267
|
+
*Andrew White*
|
131
268
|
|
132
|
-
*
|
269
|
+
* Change translation key of `submit_tag` from `module_name_class_name` to `module_name/class_name`.
|
133
270
|
|
134
|
-
*
|
271
|
+
*Rui Onodera*
|
135
272
|
|
136
|
-
*
|
137
|
-
for bad input.
|
273
|
+
* Rails 6 requires Ruby 2.5.0 or newer.
|
138
274
|
|
139
|
-
*
|
275
|
+
*Jeremy Daer*, *Kasper Timm Hansen*
|
140
276
|
|
141
277
|
|
142
|
-
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
|