activemodel 7.1.3.1 → 7.1.4.1
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 +25 -0
- data/lib/active_model/attribute_methods.rb +37 -20
- data/lib/active_model/attributes.rb +3 -3
- data/lib/active_model/gem_version.rb +1 -1
- data/lib/active_model.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 244c56485f6b507cadace603d736b30bcab923144e9a556d3f79add20b790935
|
4
|
+
data.tar.gz: 172f280d76e2f60d35db0ccee50ee8f25dbd0c366e3f51e2a3522253c947795d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 769239956a7f534c54f41e473271c586c8c9c7b190e24e10dbed1c7485dfde885c10afe89ab92f1e6870a04f39f1851691891025bbb77431349e93a97571ed64
|
7
|
+
data.tar.gz: 38f5d2bb2659f616791dfe9266725fb56a12fabbcaa8b7e659794ede4812e7fb95a59ac3f702a80e0ebaca0519a484b2a577a52bfece685ff5c1793716af00ab
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
## Rails 7.1.4.1 (October 15, 2024) ##
|
2
|
+
|
3
|
+
* No changes.
|
4
|
+
|
5
|
+
|
6
|
+
## Rails 7.1.4 (August 22, 2024) ##
|
7
|
+
|
8
|
+
* No changes.
|
9
|
+
|
10
|
+
|
11
|
+
## Rails 7.1.3.4 (June 04, 2024) ##
|
12
|
+
|
13
|
+
* No changes.
|
14
|
+
|
15
|
+
|
16
|
+
## Rails 7.1.3.3 (May 16, 2024) ##
|
17
|
+
|
18
|
+
* No changes.
|
19
|
+
|
20
|
+
|
21
|
+
## Rails 7.1.3.2 (February 21, 2024) ##
|
22
|
+
|
23
|
+
* No changes.
|
24
|
+
|
25
|
+
|
1
26
|
## Rails 7.1.3.1 (February 21, 2024) ##
|
2
27
|
|
3
28
|
* No changes.
|
@@ -215,10 +215,8 @@ module ActiveModel
|
|
215
215
|
end
|
216
216
|
end
|
217
217
|
|
218
|
-
def generate_alias_attribute_methods(code_generator, new_name, old_name)
|
219
|
-
|
220
|
-
alias_attribute_method_definition(code_generator, pattern, new_name, old_name)
|
221
|
-
end
|
218
|
+
def generate_alias_attribute_methods(code_generator, new_name, old_name) # :nodoc:
|
219
|
+
define_attribute_method(old_name, _owner: code_generator, as: new_name)
|
222
220
|
end
|
223
221
|
|
224
222
|
def alias_attribute_method_definition(code_generator, pattern, new_name, old_name) # :nodoc:
|
@@ -231,7 +229,7 @@ module ActiveModel
|
|
231
229
|
mangled_name = "__temp__#{target_name.unpack1("h*")}"
|
232
230
|
end
|
233
231
|
|
234
|
-
code_generator.define_cached_method(
|
232
|
+
code_generator.define_cached_method(mangled_name, as: method_name, namespace: :alias_attribute) do |batch|
|
235
233
|
body = if CALL_COMPILABLE_REGEXP.match?(target_name)
|
236
234
|
"self.#{target_name}(#{parameters || ''})"
|
237
235
|
else
|
@@ -321,25 +319,44 @@ module ActiveModel
|
|
321
319
|
# person.name = 'Bob'
|
322
320
|
# person.name # => "Bob"
|
323
321
|
# person.name_short? # => true
|
324
|
-
def define_attribute_method(attr_name, _owner: generated_attribute_methods)
|
322
|
+
def define_attribute_method(attr_name, _owner: generated_attribute_methods, as: attr_name)
|
325
323
|
ActiveSupport::CodeGenerator.batch(_owner, __FILE__, __LINE__) do |owner|
|
326
324
|
attribute_method_patterns.each do |pattern|
|
327
|
-
|
328
|
-
|
329
|
-
unless instance_method_already_implemented?(method_name)
|
330
|
-
generate_method = "define_method_#{pattern.proxy_target}"
|
331
|
-
|
332
|
-
if respond_to?(generate_method, true)
|
333
|
-
send(generate_method, attr_name.to_s, owner: owner)
|
334
|
-
else
|
335
|
-
define_proxy_call(owner, method_name, pattern.proxy_target, pattern.parameters, attr_name.to_s, namespace: :active_model_proxy)
|
336
|
-
end
|
337
|
-
end
|
325
|
+
define_attribute_method_pattern(pattern, attr_name, owner: owner, as: as)
|
338
326
|
end
|
339
327
|
attribute_method_patterns_cache.clear
|
340
328
|
end
|
341
329
|
end
|
342
330
|
|
331
|
+
def define_attribute_method_pattern(pattern, attr_name, owner:, as:, override: false) # :nodoc:
|
332
|
+
canonical_method_name = pattern.method_name(attr_name)
|
333
|
+
public_method_name = pattern.method_name(as)
|
334
|
+
|
335
|
+
# If defining a regular attribute method, we don't override methods that are explictly
|
336
|
+
# defined in parrent classes.
|
337
|
+
if instance_method_already_implemented?(public_method_name)
|
338
|
+
# However, for `alias_attribute`, we always define the method.
|
339
|
+
# We check for override second because `instance_method_already_implemented?`
|
340
|
+
# also check for dangerous methods.
|
341
|
+
return unless override
|
342
|
+
end
|
343
|
+
|
344
|
+
generate_method = "define_method_#{pattern.proxy_target}"
|
345
|
+
if respond_to?(generate_method, true)
|
346
|
+
send(generate_method, attr_name.to_s, owner: owner, as: as)
|
347
|
+
else
|
348
|
+
define_proxy_call(
|
349
|
+
owner,
|
350
|
+
canonical_method_name,
|
351
|
+
pattern.proxy_target,
|
352
|
+
pattern.parameters,
|
353
|
+
attr_name.to_s,
|
354
|
+
namespace: :active_model_proxy,
|
355
|
+
as: public_method_name,
|
356
|
+
)
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
343
360
|
# Removes all the previously dynamically defined methods from the class, including alias attribute methods.
|
344
361
|
#
|
345
362
|
# class Person
|
@@ -418,7 +435,7 @@ module ActiveModel
|
|
418
435
|
# Define a method `name` in `mod` that dispatches to `send`
|
419
436
|
# using the given `extra` args. This falls back on `send`
|
420
437
|
# if the called name cannot be compiled.
|
421
|
-
def define_proxy_call(code_generator, name, proxy_target, parameters, *call_args, namespace:)
|
438
|
+
def define_proxy_call(code_generator, name, proxy_target, parameters, *call_args, namespace:, as: name)
|
422
439
|
mangled_name = name
|
423
440
|
unless NAME_COMPILABLE_REGEXP.match?(name)
|
424
441
|
mangled_name = "__temp__#{name.unpack1("h*")}"
|
@@ -426,9 +443,9 @@ module ActiveModel
|
|
426
443
|
|
427
444
|
call_args.map!(&:inspect)
|
428
445
|
call_args << parameters if parameters
|
429
|
-
namespace = :"#{namespace}_#{proxy_target}
|
446
|
+
namespace = :"#{namespace}_#{proxy_target}"
|
430
447
|
|
431
|
-
code_generator.define_cached_method(
|
448
|
+
code_generator.define_cached_method(mangled_name, as: as, namespace: namespace) do |batch|
|
432
449
|
body = if CALL_COMPILABLE_REGEXP.match?(proxy_target)
|
433
450
|
"self.#{proxy_target}(#{call_args.join(", ")})"
|
434
451
|
else
|
@@ -76,11 +76,11 @@ module ActiveModel
|
|
76
76
|
end
|
77
77
|
|
78
78
|
private
|
79
|
-
def define_method_attribute=(
|
79
|
+
def define_method_attribute=(canonical_name, owner:, as: canonical_name)
|
80
80
|
ActiveModel::AttributeMethods::AttrNames.define_attribute_accessor_method(
|
81
|
-
owner,
|
81
|
+
owner, canonical_name, writer: true,
|
82
82
|
) do |temp_method_name, attr_name_expr|
|
83
|
-
owner.define_cached_method("#{
|
83
|
+
owner.define_cached_method(temp_method_name, as: "#{as}=", namespace: :active_model) do |batch|
|
84
84
|
batch <<
|
85
85
|
"def #{temp_method_name}(value)" <<
|
86
86
|
" _write_attribute(#{attr_name_expr}, value)" <<
|
data/lib/active_model.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activemodel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.1.
|
4
|
+
version: 7.1.4.1
|
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-10-15 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: 7.1.
|
19
|
+
version: 7.1.4.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.1.
|
26
|
+
version: 7.1.4.1
|
27
27
|
description: A toolkit for building modeling frameworks like Active Record. Rich support
|
28
28
|
for attributes, callbacks, validations, serialization, internationalization, and
|
29
29
|
testing.
|
@@ -112,12 +112,12 @@ licenses:
|
|
112
112
|
- MIT
|
113
113
|
metadata:
|
114
114
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
115
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.1.
|
116
|
-
documentation_uri: https://api.rubyonrails.org/v7.1.
|
115
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.1.4.1/activemodel/CHANGELOG.md
|
116
|
+
documentation_uri: https://api.rubyonrails.org/v7.1.4.1/
|
117
117
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
118
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.1.
|
118
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.1.4.1/activemodel
|
119
119
|
rubygems_mfa_required: 'true'
|
120
|
-
post_install_message:
|
120
|
+
post_install_message:
|
121
121
|
rdoc_options: []
|
122
122
|
require_paths:
|
123
123
|
- lib
|
@@ -132,8 +132,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
132
|
- !ruby/object:Gem::Version
|
133
133
|
version: '0'
|
134
134
|
requirements: []
|
135
|
-
rubygems_version: 3.
|
136
|
-
signing_key:
|
135
|
+
rubygems_version: 3.5.16
|
136
|
+
signing_key:
|
137
137
|
specification_version: 4
|
138
138
|
summary: A toolkit for building modeling frameworks (part of Rails).
|
139
139
|
test_files: []
|