avromatic 3.0.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []