activemodel 7.0.4.3 → 7.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b583349040c22994e3416137601ab463e571ce4bf061cfa2bcdee0ff483c1991
4
- data.tar.gz: 9981ebe3f9b0a05eca705de63770ea323e1aa91a5b0af33dcaa7318ec78f36a1
3
+ metadata.gz: 88150733324b801dc2198570a32ef11184c4865a2cb3fbccd405ac31dad489a6
4
+ data.tar.gz: 6d7ce343da16108e59c8362526dc898adba71d6837cbe695a3fd8bd30ad2eb08
5
5
  SHA512:
6
- metadata.gz: f5b6c01c98ad1a60dd2bfba39347b1e4fc015a1cfb89f13d5187bece1e204b7a81da0521dde8e523706fdd5e47b56507a9c9e31f5a3238d41ebffecf537e3af2
7
- data.tar.gz: 1ba1e833a22135483c8d21b494e2a6ba28e9d433e7b6a4bfbedf7e49b3fe99bf6e6e53409292a04319ca6df3996fd1ea7a384a3e53fa569aeab11df1a8cbfb89
6
+ metadata.gz: 6fee121b0166ed0a83926f5d575cc700d7267d4c5b87d0dc4cdbd5d0c5eed376e15688c5aa884af7375548a55a20138a16a2fc0c999289c5de0b1b49631213c8
7
+ data.tar.gz: c9d3ceceb28ed93fa597d1cd41d727ee63022e74849e79a9ee5f7a9202beeddb41e15e69103009768b46ce8be82cf5f43b84b06e88db32cc7fd82c4e3ffb1efe
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## Rails 7.0.6 (June 29, 2023) ##
2
+
3
+ * No changes.
4
+
5
+
6
+ ## Rails 7.0.5.1 (June 26, 2023) ##
7
+
8
+ * No changes.
9
+
10
+
11
+ ## Rails 7.0.5 (May 24, 2023) ##
12
+
13
+ * No changes.
14
+
15
+
1
16
  ## Rails 7.0.4.3 (March 13, 2023) ##
2
17
 
3
18
  * No changes.
data/README.rdoc CHANGED
@@ -239,7 +239,7 @@ The latest version of Active Model can be installed with RubyGems:
239
239
 
240
240
  $ gem install activemodel
241
241
 
242
- Source code can be downloaded as part of the Rails project on GitHub
242
+ Source code can be downloaded as part of the \Rails project on GitHub
243
243
 
244
244
  * https://github.com/rails/rails/tree/main/activemodel
245
245
 
@@ -257,7 +257,7 @@ API documentation is at:
257
257
 
258
258
  * https://api.rubyonrails.org
259
259
 
260
- Bug reports for the Ruby on Rails project can be filed here:
260
+ Bug reports for the Ruby on \Rails project can be filed here:
261
261
 
262
262
  * https://github.com/rails/rails/issues
263
263
 
@@ -49,18 +49,17 @@ module ActiveModel
49
49
  # end
50
50
  #
51
51
  # private
52
+ # def attribute_contrived?(attr)
53
+ # true
54
+ # end
52
55
  #
53
- # def attribute_contrived?(attr)
54
- # true
55
- # end
56
- #
57
- # def clear_attribute(attr)
58
- # send("#{attr}=", nil)
59
- # end
56
+ # def clear_attribute(attr)
57
+ # send("#{attr}=", nil)
58
+ # end
60
59
  #
61
- # def reset_attribute_to_default!(attr)
62
- # send("#{attr}=", 'Default Name')
63
- # end
60
+ # def reset_attribute_to_default!(attr)
61
+ # send("#{attr}=", 'Default Name')
62
+ # end
64
63
  # end
65
64
  module AttributeMethods
66
65
  extend ActiveSupport::Concern
@@ -95,10 +94,9 @@ module ActiveModel
95
94
  # define_attribute_methods :name
96
95
  #
97
96
  # private
98
- #
99
- # def clear_attribute(attr)
100
- # send("#{attr}=", nil)
101
- # end
97
+ # def clear_attribute(attr)
98
+ # send("#{attr}=", nil)
99
+ # end
102
100
  # end
103
101
  #
104
102
  # person = Person.new
@@ -131,10 +129,9 @@ module ActiveModel
131
129
  # define_attribute_methods :name
132
130
  #
133
131
  # private
134
- #
135
- # def attribute_short?(attr)
136
- # send(attr).length < 5
137
- # end
132
+ # def attribute_short?(attr)
133
+ # send(attr).length < 5
134
+ # end
138
135
  # end
139
136
  #
140
137
  # person = Person.new
@@ -167,10 +164,9 @@ module ActiveModel
167
164
  # define_attribute_methods :name
168
165
  #
169
166
  # private
170
- #
171
- # def reset_attribute_to_default!(attr)
172
- # send("#{attr}=", 'Default Name')
173
- # end
167
+ # def reset_attribute_to_default!(attr)
168
+ # send("#{attr}=", 'Default Name')
169
+ # end
174
170
  # end
175
171
  #
176
172
  # person = Person.new
@@ -194,10 +190,9 @@ module ActiveModel
194
190
  # alias_attribute :nickname, :name
195
191
  #
196
192
  # private
197
- #
198
- # def attribute_short?(attr)
199
- # send(attr).length < 5
200
- # end
193
+ # def attribute_short?(attr)
194
+ # send(attr).length < 5
195
+ # end
201
196
  # end
202
197
  #
203
198
  # person = Person.new
@@ -268,10 +263,9 @@ module ActiveModel
268
263
  # define_attribute_methods :name, :age, :address
269
264
  #
270
265
  # private
271
- #
272
- # def clear_attribute(attr)
273
- # send("#{attr}=", nil)
274
- # end
266
+ # def clear_attribute(attr)
267
+ # send("#{attr}=", nil)
268
+ # end
275
269
  # end
276
270
  def define_attribute_methods(*attr_names)
277
271
  ActiveSupport::CodeGenerator.batch(generated_attribute_methods, __FILE__, __LINE__) do |owner|
@@ -298,10 +292,9 @@ module ActiveModel
298
292
  # define_attribute_method :name
299
293
  #
300
294
  # private
301
- #
302
- # def attribute_short?(attr)
303
- # send(attr).length < 5
304
- # end
295
+ # def attribute_short?(attr)
296
+ # send(attr).length < 5
297
+ # end
305
298
  # end
306
299
  #
307
300
  # person = Person.new
@@ -337,10 +330,9 @@ module ActiveModel
337
330
  # define_attribute_method :name
338
331
  #
339
332
  # private
340
- #
341
- # def attribute_short?(attr)
342
- # send(attr).length < 5
343
- # end
333
+ # def attribute_short?(attr)
334
+ # send(attr).length < 5
335
+ # end
344
336
  # end
345
337
  #
346
338
  # person = Person.new
@@ -43,8 +43,8 @@ module ActiveModel
43
43
 
44
44
  def changed?(attr_name, from: OPTION_NOT_GIVEN, to: OPTION_NOT_GIVEN)
45
45
  attribute_changed?(attr_name) &&
46
- (OPTION_NOT_GIVEN == from || original_value(attr_name) == from) &&
47
- (OPTION_NOT_GIVEN == to || fetch_value(attr_name) == to)
46
+ (OPTION_NOT_GIVEN == from || original_value(attr_name) == type_cast(attr_name, from)) &&
47
+ (OPTION_NOT_GIVEN == to || fetch_value(attr_name) == type_cast(attr_name, to))
48
48
  end
49
49
 
50
50
  def changed_in_place?(attr_name)
@@ -82,6 +82,10 @@ module ActiveModel
82
82
  def fetch_value(attr_name)
83
83
  attributes.fetch_value(attr_name)
84
84
  end
85
+
86
+ def type_cast(attr_name, value)
87
+ attributes[attr_name].type_cast(value)
88
+ end
85
89
  end
86
90
 
87
91
  class ForcedMutationTracker < AttributeMutationTracker # :nodoc:
@@ -143,6 +147,10 @@ module ActiveModel
143
147
  rescue TypeError, NoMethodError
144
148
  value
145
149
  end
150
+
151
+ def type_cast(attr_name, value)
152
+ value
153
+ end
146
154
  end
147
155
 
148
156
  class NullMutationTracker # :nodoc:
@@ -74,7 +74,7 @@ module ActiveModel
74
74
  # <tt>:only</tt> option, where you can choose if you want all types (before,
75
75
  # around or after) or just some.
76
76
  #
77
- # define_model_callbacks :initializer, only: :after
77
+ # define_model_callbacks :initialize, only: :after
78
78
  #
79
79
  # Note, the <tt>only: <type></tt> hash will apply to all callbacks defined
80
80
  # on that method call. To get around this you can call the define_model_callbacks
@@ -9,8 +9,8 @@ module ActiveModel
9
9
  module VERSION
10
10
  MAJOR = 7
11
11
  MINOR = 0
12
- TINY = 4
13
- PRE = "3"
12
+ TINY = 6
13
+ PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -15,7 +15,9 @@ module ActiveModel
15
15
  if value.is_a?(Data)
16
16
  value.to_s
17
17
  else
18
- super
18
+ value = super
19
+ value = value.b if ::String === value && value.encoding != Encoding::BINARY
20
+ value
19
21
  end
20
22
  end
21
23
 
@@ -31,7 +33,9 @@ module ActiveModel
31
33
 
32
34
  class Data # :nodoc:
33
35
  def initialize(value)
34
- @value = value.to_s
36
+ value = value.to_s
37
+ value = value.b unless value.encoding == Encoding::BINARY
38
+ @value = value
35
39
  end
36
40
 
37
41
  def to_s
@@ -4,6 +4,10 @@ module ActiveModel
4
4
  module Type
5
5
  module Helpers # :nodoc: all
6
6
  module Mutable
7
+ def immutable_value(value)
8
+ value.deep_dup.freeze
9
+ end
10
+
7
11
  def cast(value)
8
12
  deserialize(serialize(value))
9
13
  end
@@ -121,6 +121,10 @@ module ActiveModel
121
121
  def assert_valid_value(_)
122
122
  end
123
123
 
124
+ def immutable_value(value) # :nodoc:
125
+ value
126
+ end
127
+
124
128
  private
125
129
  # Convenience method for types which do not need separate type casting
126
130
  # behavior for user and database inputs. Called by Value#cast for
@@ -43,10 +43,9 @@ module ActiveModel
43
43
  # before_validation :remove_whitespaces
44
44
  #
45
45
  # private
46
- #
47
- # def remove_whitespaces
48
- # name.strip!
49
- # end
46
+ # def remove_whitespaces
47
+ # name.strip!
48
+ # end
50
49
  # end
51
50
  #
52
51
  # person = Person.new
@@ -74,10 +73,9 @@ module ActiveModel
74
73
  # after_validation :set_status
75
74
  #
76
75
  # private
77
- #
78
- # def set_status
79
- # self.status = errors.empty?
80
- # end
76
+ # def set_status
77
+ # self.status = errors.empty?
78
+ # end
81
79
  # end
82
80
  #
83
81
  # person = Person.new
@@ -85,10 +85,9 @@ module ActiveModel
85
85
  # validates_length_of :words_in_essay, minimum: 100, too_short: 'Your essay must be at least 100 words.'
86
86
  #
87
87
  # private
88
- #
89
- # def words_in_essay
90
- # essay.scan(/\w+/)
91
- # end
88
+ # def words_in_essay
89
+ # essay.scan(/\w+/)
90
+ # end
92
91
  # end
93
92
  #
94
93
  # Constraint options:
@@ -96,7 +96,7 @@ module ActiveModel
96
96
  # Example:
97
97
  #
98
98
  # validates :password, presence: true, confirmation: true, if: :password_required?
99
- # validates :token, length: 24, strict: TokenLengthException
99
+ # validates :token, length: { is: 24 }, strict: TokenLengthException
100
100
  #
101
101
  #
102
102
  # Finally, the options +:if+, +:unless+, +:on+, +:allow_blank+, +:allow_nil+, +:strict+
data/lib/active_model.rb CHANGED
@@ -58,6 +58,7 @@ module ActiveModel
58
58
  autoload :RangeError, "active_model/errors"
59
59
  autoload :StrictValidationFailed, "active_model/errors"
60
60
  autoload :UnknownAttributeError, "active_model/errors"
61
+ autoload :ValidationError, "active_model/validations"
61
62
  end
62
63
 
63
64
  module Serializers
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.0.4.3
4
+ version: 7.0.6
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: 2023-03-13 00:00:00.000000000 Z
11
+ date: 2023-06-29 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.0.4.3
19
+ version: 7.0.6
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.4.3
26
+ version: 7.0.6
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.
@@ -107,12 +107,12 @@ licenses:
107
107
  - MIT
108
108
  metadata:
109
109
  bug_tracker_uri: https://github.com/rails/rails/issues
110
- changelog_uri: https://github.com/rails/rails/blob/v7.0.4.3/activemodel/CHANGELOG.md
111
- documentation_uri: https://api.rubyonrails.org/v7.0.4.3/
110
+ changelog_uri: https://github.com/rails/rails/blob/v7.0.6/activemodel/CHANGELOG.md
111
+ documentation_uri: https://api.rubyonrails.org/v7.0.6/
112
112
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
113
- source_code_uri: https://github.com/rails/rails/tree/v7.0.4.3/activemodel
113
+ source_code_uri: https://github.com/rails/rails/tree/v7.0.6/activemodel
114
114
  rubygems_mfa_required: 'true'
115
- post_install_message:
115
+ post_install_message:
116
116
  rdoc_options: []
117
117
  require_paths:
118
118
  - lib
@@ -127,8 +127,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  - !ruby/object:Gem::Version
128
128
  version: '0'
129
129
  requirements: []
130
- rubygems_version: 3.4.3
131
- signing_key:
130
+ rubygems_version: 3.4.13
131
+ signing_key:
132
132
  specification_version: 4
133
133
  summary: A toolkit for building modeling frameworks (part of Rails).
134
134
  test_files: []