avromatic 3.0.0 → 3.0.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: d90a142c407a453ef9007373f215d8acd137937e54b46aa2c29e8edcf8440aef
4
- data.tar.gz: c8eecbb9860859346d9a67e3e2a78a2e38447bdff4d4fb9208f57bcf89940215
3
+ metadata.gz: d4938e400e426cf06497e5819b1f92c9c3f12920ada5ed999a1a826bd19c7efb
4
+ data.tar.gz: e37322f05ec5adaff55e28bc8e15a2e2164dc3d8575fb8ed0dad6e5b283fa440
5
5
  SHA512:
6
- metadata.gz: 77b078294c887e298e4ede5f1f47cfccaccffd0b065ad1d4bad9820d2af8c77e522462282d1d44db35acefaf6fc301ccb7a59dfda844c5ebee297d51792ee912
7
- data.tar.gz: 8f57c2afee1266f790c031920efb7e1690420e4c6de36d22af3e11361bc5bf7eaabb3eba4e2974a994a7f7509e3db01335c954895c981db4069a8c7828b483de
6
+ metadata.gz: 258766a91f94e209f18e0f2060bb2590d606bb973b93bd702a2acc45535d2591e7688b5d14695c004621a5eddf8d328528518447ccf26521c10d2fb3821dfdb6
7
+ data.tar.gz: fd1aea43406300f106aba81a9be6212e50d4e6bab68b4a3a25bb5f7aafaa01400bb1712bfe7a9a4206a6dc8fa7bf31491988bd43a69755b2582f6c44d26603ba
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # avromatic changelog
2
2
 
3
+ ## 3.0.1
4
+ - Raise an error when registering a nested model that has already been auto-generated.
5
+ This avoids hard to troubleshoot coercion errors when instantiating models and fixes
6
+ a regression introduced in Avromatic 2.2.2.
7
+
3
8
  ## 3.0.0
4
9
  - Drop support for Ruby 2.4.
5
10
  - Add support for Ruby 3.0.
@@ -14,12 +14,14 @@ module Avromatic
14
14
  def register!
15
15
  return unless key_avro_schema.nil? && value_avro_schema.type_sym == :record
16
16
 
17
+ processed = Set.new
17
18
  roots = [self]
18
19
  until roots.empty?
19
20
  model = roots.shift
20
- next if nested_models.registered?(model)
21
+ # Avoid any nested model dependency cycles by ignoring already processed models
22
+ next unless processed.add?(model)
21
23
 
22
- nested_models.register(model)
24
+ nested_models.ensure_registered_model(model)
23
25
  roots.concat(model.referenced_model_classes)
24
26
  end
25
27
  end
@@ -42,8 +42,11 @@ module Avromatic
42
42
  def ensure_registered_model(model)
43
43
  name = model_fullname(model)
44
44
  if registered?(name)
45
- unless fetch(name).equal?(model)
46
- raise "attempted to replace existing model #{fetch(name)} with new model #{model} as '#{name}'"
45
+ existing_model = fetch(name)
46
+ unless existing_model.equal?(model)
47
+ raise "Attempted to replace existing Avromatic model #{model_debug_name(existing_model)} with new model " \
48
+ "#{model_debug_name(model)} as '#{name}'. Perhaps '#{model_debug_name(model)}' needs to be eager loaded " \
49
+ 'via the Avromatic eager_load_models setting?'
47
50
  end
48
51
  else
49
52
  register(model)
@@ -65,5 +68,11 @@ module Avromatic
65
68
 
66
69
  value.start_with?('.') ? value.from(1) : value
67
70
  end
71
+
72
+ private
73
+
74
+ def model_debug_name(model)
75
+ model.name || model.to_s
76
+ end
68
77
  end
69
78
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avromatic
4
- VERSION = '3.0.0'
4
+ VERSION = '3.0.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avromatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salsify Engineering
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-22 00:00:00.000000000 Z
11
+ date: 2021-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -346,7 +346,7 @@ homepage: https://github.com/salsify/avromatic.git
346
346
  licenses:
347
347
  - MIT
348
348
  metadata: {}
349
- post_install_message:
349
+ post_install_message:
350
350
  rdoc_options: []
351
351
  require_paths:
352
352
  - lib
@@ -361,8 +361,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
361
361
  - !ruby/object:Gem::Version
362
362
  version: '0'
363
363
  requirements: []
364
- rubygems_version: 3.0.3.1
365
- signing_key:
364
+ rubygems_version: 3.0.8
365
+ signing_key:
366
366
  specification_version: 4
367
367
  summary: Generate Ruby models from Avro schemas
368
368
  test_files: []