aws-record 2.14.0 → 2.15.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98102b697ac8df9118fd286cdd37a4254092f241a3d3fe4a15805431ffea3a3c
4
- data.tar.gz: 0354c3e97ae871234058fd7b676290a4496d26ba6de1cdefacad07dbd8894cfa
3
+ metadata.gz: 9eef76c87691650ac4096efa1ab1ce0096c7c53447237ad3e7bfc46f514f67b8
4
+ data.tar.gz: 6da7c016df8a691737023c450a9783eea0bd4f6b3fd4448fe356e26f9f478da2
5
5
  SHA512:
6
- metadata.gz: d68f9c4f65d53f597212d8fb2ea537c75dfd12c6017b726e88d2be9c6ac9e8f49f2b58905b0779bc556c1587d46fabca60ae4aa73884bc4f1ff437bb56da3739
7
- data.tar.gz: aa68a6acbdfbcc5a24d7c07115c5c7ce3af8e84c2a9fba0bc1768256ece19c9508d49b3d9249251e11a08374da00b9701c6aa971c8c711310591f3bb811513d9
6
+ metadata.gz: 6f11450af2f6e6525d319dfe8b2c5c028710b89aade6156bd7d2cb17adba28cdd5aaeadaed5710c06a74e326851094e1efae97c48919e98fa80b74a6c557573e
7
+ data.tar.gz: 22d93f13ff964528a7711e0548aa48d7b93ff5194899365b4b9091b7c646e5b2097ab95e3e806d47f8c9841539b5e2c1047145cd0a32314ca1cc7b4ad3abaf61
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ 2.15.1 (2026-08-10)
2
+ ------------------
3
+ * Issue - Optimize default value handling.
4
+
5
+ 2.15.0 (2026-04-20)
6
+ ------------------
7
+
8
+ * Feature - Add `ostruct` as a dependency to support Ruby 4.0.
9
+
1
10
  2.14.0 (2025-06-04)
2
11
  ------------------
3
12
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.14.0
1
+ 2.15.1
@@ -84,6 +84,8 @@ module Aws
84
84
  def default_value
85
85
  if _is_lambda?(@default_value_or_lambda)
86
86
  type_cast(@default_value_or_lambda.call)
87
+ elsif _immutable?(@default_value_or_lambda)
88
+ @default_value_or_lambda
87
89
  else
88
90
  _deep_copy(@default_value_or_lambda)
89
91
  end
@@ -91,6 +93,14 @@ module Aws
91
93
 
92
94
  private
93
95
 
96
+ def _immutable?(value)
97
+ value.nil? ||
98
+ value.equal?(true) ||
99
+ value.equal?(false) ||
100
+ value.is_a?(Symbol) ||
101
+ value.is_a?(Numeric)
102
+ end
103
+
94
104
  def _deep_copy(obj)
95
105
  Marshal.load(Marshal.dump(obj))
96
106
  end
@@ -37,7 +37,7 @@ module Aws
37
37
  # See {Batch.read} for example usage.
38
38
  # @return [Array] an array of unordered new items
39
39
  def execute!
40
- operation_keys = unprocessed_keys[0..BATCH_GET_ITEM_LIMIT - 1]
40
+ operation_keys = unprocessed_keys[0..(BATCH_GET_ITEM_LIMIT - 1)]
41
41
  @unprocessed_keys = unprocessed_keys[BATCH_GET_ITEM_LIMIT..] || []
42
42
 
43
43
  operations = build_operations(operation_keys)
@@ -44,8 +44,8 @@ module Aws
44
44
 
45
45
  def clean!
46
46
  @dirty_flags = {}
47
+ populate_default_values
47
48
  @model_attributes.attributes.each_key do |name|
48
- populate_default_values
49
49
  value = get_attribute(name)
50
50
  @clean_copies[name] = if @track_mutations
51
51
  _deep_copy(value)
@@ -59,7 +59,7 @@ module Aws
59
59
  end
60
60
 
61
61
  def _check_if_reserved(name)
62
- return unless @model_class.instance_methods.include?(name)
62
+ return unless @model_class.method_defined?(name)
63
63
 
64
64
  raise Errors::ReservedName, "Cannot name an attribute #{name}, that would collide with an " \
65
65
  'existing instance method.'
@@ -244,7 +244,7 @@ module Aws
244
244
  # we will only alter TTL status if we have a TTL attribute defined. We
245
245
  # may someday support explicit TTL deletion, but we do not yet do this.
246
246
  return unless @ttl_attribute
247
- return if _ttl_compatibility_check
247
+ return if ttl_compatibility_check?
248
248
 
249
249
  client.update_time_to_live(
250
250
  table_name: @model_class.table_name,
@@ -268,7 +268,7 @@ module Aws
268
268
  # @return [Boolean] true if remote is compatible, false otherwise.
269
269
  def compatible?
270
270
  resp = @client.describe_table(table_name: @model_class.table_name)
271
- _compatible_check(resp) && _ttl_compatibility_check
271
+ _compatible_check(resp) && ttl_compatibility_check?
272
272
  rescue DynamoDB::Errors::ResourceNotFoundException
273
273
  false
274
274
  end
@@ -285,14 +285,14 @@ module Aws
285
285
  _keys_equal(resp) &&
286
286
  _ad_equal(resp) &&
287
287
  _gsi_equal(resp) &&
288
- _ttl_match_check
288
+ ttl_match_check?
289
289
  rescue DynamoDB::Errors::ResourceNotFoundException
290
290
  false
291
291
  end
292
292
 
293
293
  private
294
294
 
295
- def _ttl_compatibility_check
295
+ def ttl_compatibility_check?
296
296
  if @ttl_attribute
297
297
  ttl_status = @client.describe_time_to_live(
298
298
  table_name: @model_class.table_name
@@ -305,7 +305,7 @@ module Aws
305
305
  end
306
306
  end
307
307
 
308
- def _ttl_match_check
308
+ def ttl_match_check?
309
309
  ttl_status = @client.describe_time_to_live(
310
310
  table_name: @model_class.table_name
311
311
  )
@@ -17,7 +17,7 @@ module Aws
17
17
  # class. If this option is not included, a client will be constructed for
18
18
  # you with default parameters.
19
19
  def initialize(model, opts = {})
20
- _assert_model_valid(model)
20
+ valid_model?(model)
21
21
  @model = model
22
22
  @client = opts[:client] || model.dynamodb_client || Aws::DynamoDB::Client.new
23
23
  @client.config.user_agent_frameworks << 'aws-record'
@@ -130,7 +130,7 @@ module Aws
130
130
 
131
131
  private
132
132
 
133
- def _assert_model_valid(model)
133
+ def valid_model?(model)
134
134
  _assert_required_include(model)
135
135
  model.model_valid?
136
136
  end
metadata CHANGED
@@ -1,14 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-record
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.14.0
4
+ version: 2.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-06-04 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: ostruct
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: aws-sdk-dynamodb
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -75,7 +89,7 @@ files:
75
89
  - lib/aws-record/record/version.rb
76
90
  homepage: https://github.com/aws/aws-sdk-ruby-record
77
91
  licenses:
78
- - Apache 2.0
92
+ - Apache-2.0
79
93
  metadata: {}
80
94
  rdoc_options: []
81
95
  require_paths:
@@ -91,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
105
  - !ruby/object:Gem::Version
92
106
  version: '0'
93
107
  requirements: []
94
- rubygems_version: 3.6.5
108
+ rubygems_version: 4.0.16
95
109
  specification_version: 4
96
110
  summary: AWS Record library for Amazon DynamoDB
97
111
  test_files: []