avromatic 2.2.1 → 2.2.2
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 +4 -0
- data/lib/avromatic.rb +1 -3
- data/lib/avromatic/model/nested_models.rb +13 -2
- data/lib/avromatic/model/types/abstract_type.rb +7 -0
- data/lib/avromatic/model/types/array_type.rb +4 -0
- data/lib/avromatic/model/types/boolean_type.rb +4 -0
- data/lib/avromatic/model/types/custom_type.rb +4 -0
- data/lib/avromatic/model/types/date_type.rb +4 -0
- data/lib/avromatic/model/types/enum_type.rb +4 -0
- data/lib/avromatic/model/types/fixed_type.rb +4 -0
- data/lib/avromatic/model/types/float_type.rb +4 -0
- data/lib/avromatic/model/types/integer_type.rb +4 -0
- data/lib/avromatic/model/types/map_type.rb +5 -0
- data/lib/avromatic/model/types/null_type.rb +4 -0
- data/lib/avromatic/model/types/record_type.rb +4 -0
- data/lib/avromatic/model/types/string_type.rb +5 -1
- data/lib/avromatic/model/types/timestamp_micros_type.rb +3 -0
- data/lib/avromatic/model/types/timestamp_millis_type.rb +3 -0
- data/lib/avromatic/model/types/union_type.rb +4 -0
- data/lib/avromatic/model_registry.rb +2 -1
- data/lib/avromatic/rspec.rb +6 -1
- data/lib/avromatic/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cba28133aa9a1a1ce5bb9a03c54fc4aa01f90d6dd3a72b98d74e5eb47276925e
|
4
|
+
data.tar.gz: 4fc8e33b860c6213fdda238946799164f8f52655b8cd3d5995f2c095e63aa2e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a027c37208e834dee9772ea0fc2cfdd0f0a65699426e4e89b00e32268f3938a2842d1b4101fdd50f04f0b61d151f8ea9a2dd08bba168875b47b39636053eebe6
|
7
|
+
data.tar.gz: 7568eb10634ab6dc9e80236c8cedccd18a7259858c4a4834797e91f3349f43cf34d0dec81b5cf3fec4c2cb9c8400002d4066c9240a27eca6d0751f470a1faffa
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# avromatic changelog
|
2
2
|
|
3
|
+
## v2.2.2
|
4
|
+
- Fix missing models in the model registry when in development by loading the nested models of eager loaded models.
|
5
|
+
- Fake schema registry support for stubbing URLs with usernames and passwords.
|
6
|
+
|
3
7
|
## v2.2.1
|
4
8
|
- Avoid allocating default empty hash in `Avromatic::IO::DatumReader.read_data`
|
5
9
|
|
data/lib/avromatic.rb
CHANGED
@@ -85,9 +85,7 @@ module Avromatic
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def self.eager_load_models!
|
88
|
-
|
89
|
-
nested_models.ensure_registered_model(model_name.constantize)
|
90
|
-
end
|
88
|
+
@eager_load_model_names&.each { |model_name| model_name.constantize.register! }
|
91
89
|
end
|
92
90
|
private_class_method :eager_load_models!
|
93
91
|
end
|
@@ -12,10 +12,21 @@ module Avromatic
|
|
12
12
|
module ClassMethods
|
13
13
|
# Register this model if it can be used as a nested model.
|
14
14
|
def register!
|
15
|
-
|
16
|
-
|
15
|
+
return unless key_avro_schema.nil? && value_avro_schema.type_sym == :record
|
16
|
+
|
17
|
+
roots = [self]
|
18
|
+
until roots.empty?
|
19
|
+
model = roots.shift
|
20
|
+
next if nested_models.registered?(model)
|
21
|
+
|
22
|
+
nested_models.register(model)
|
23
|
+
roots.concat(model.referenced_model_classes)
|
17
24
|
end
|
18
25
|
end
|
26
|
+
|
27
|
+
def referenced_model_classes
|
28
|
+
attribute_definitions.values.flat_map { |definition| definition.type.referenced_model_classes }.freeze
|
29
|
+
end
|
19
30
|
end
|
20
31
|
end
|
21
32
|
end
|
@@ -4,6 +4,9 @@ module Avromatic
|
|
4
4
|
module Model
|
5
5
|
module Types
|
6
6
|
class AbstractType
|
7
|
+
EMPTY_ARRAY = [].freeze
|
8
|
+
private_constant :EMPTY_ARRAY
|
9
|
+
|
7
10
|
def value_classes
|
8
11
|
raise "#{__method__} must be overridden by #{self.class.name}"
|
9
12
|
end
|
@@ -31,6 +34,10 @@ module Avromatic
|
|
31
34
|
def serialize(_value, **)
|
32
35
|
raise "#{__method__} must be overridden by #{self.class.name}"
|
33
36
|
end
|
37
|
+
|
38
|
+
def referenced_model_classes
|
39
|
+
raise "#{__method__} must be overridden by #{self.class.name}"
|
40
|
+
end
|
34
41
|
end
|
35
42
|
end
|
36
43
|
end
|
@@ -5,7 +5,7 @@ require 'avromatic/model/types/abstract_type'
|
|
5
5
|
module Avromatic
|
6
6
|
module Model
|
7
7
|
module Types
|
8
|
-
class StringType
|
8
|
+
class StringType < AbstractType
|
9
9
|
VALUE_CLASSES = [::String].freeze
|
10
10
|
INPUT_CLASSES = [::String, ::Symbol].freeze
|
11
11
|
|
@@ -42,6 +42,10 @@ module Avromatic
|
|
42
42
|
def serialize(value, **)
|
43
43
|
value
|
44
44
|
end
|
45
|
+
|
46
|
+
def referenced_model_classes
|
47
|
+
EMPTY_ARRAY
|
48
|
+
end
|
45
49
|
end
|
46
50
|
end
|
47
51
|
end
|
data/lib/avromatic/rspec.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'uri'
|
3
4
|
require 'webmock/rspec'
|
4
5
|
require 'avro_schema_registry/test/fake_server'
|
5
6
|
|
6
7
|
RSpec.configure do |config|
|
7
8
|
config.before(:each) do
|
8
|
-
WebMock
|
9
|
+
# Strip the username/password from the URL so WebMock can match the URL
|
10
|
+
registry_uri = URI(Avromatic.registry_url)
|
11
|
+
registry_uri.userinfo = ''
|
12
|
+
|
13
|
+
WebMock.stub_request(:any, /^#{registry_uri}/).to_rack(AvroSchemaRegistry::FakeServer)
|
9
14
|
AvroSchemaRegistry::FakeServer.clear
|
10
15
|
Avromatic.build_messaging!
|
11
16
|
end
|
data/lib/avromatic/version.rb
CHANGED
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: 2.2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Salsify Engineering
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|