avromatic 0.17.1 → 0.18.0.rc0
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/README.md +1 -1
- data/avromatic.gemspec +1 -1
- data/lib/avromatic/model/message_decoder.rb +2 -2
- data/lib/avromatic/rspec.rb +2 -2
- data/lib/avromatic/schema_registry_patch.rb +2 -2
- data/lib/avromatic/test/fake_confluent_schema_registry_server.rb +24 -0
- data/lib/avromatic/test/fake_schema_registry_server.rb +4 -22
- data/lib/avromatic/version.rb +1 -1
- data/lib/avromatic.rb +2 -2
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87f9dfc66765f2cd2bc52b7391214bbbe4d988fb
|
4
|
+
data.tar.gz: 69c50be9646eb962b03e47173dc6ac982d4f13cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cc691fbf191c7b416f6921b3c1f71e2803a773c8c92c4b54f07602557511bd98ff18de01fdcb60bc3c9a2e0b3739ae69de13d164a20a9f2d97d8b5360cb693b
|
7
|
+
data.tar.gz: f05dc0e9eada3a419eb6e836bec0ea77d9c65bc0896699fd664c92cf44b95fe76471d045a62fb2d0afc809d7728d64e6c9d3a2d247266cb83deb277c7383c1a4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# avromatic changelog
|
2
2
|
|
3
|
+
## v0.18.0
|
4
|
+
- Compatibility with `avro_turf` v0.8.0. `avromatic/test/fake_schema_registry_server`
|
5
|
+
is now deprecated in favor of `avromatic/test/fake_confluent_schema_registry_server`.
|
6
|
+
|
3
7
|
## v0.17.1
|
4
8
|
- Correctly namespace Avro errors raised by `Avromatic::IO::DatumReader`.
|
5
9
|
|
data/README.md
CHANGED
@@ -60,7 +60,7 @@ The configuration options below are required when using a schema registry
|
|
60
60
|
(see [Confluent Schema Registry](http://docs.confluent.io/2.0.1/schema-registry/docs/intro.html))
|
61
61
|
and the [Messaging API](#messaging-api).
|
62
62
|
|
63
|
-
* **schema_registry**: An `AvroTurf::
|
63
|
+
* **schema_registry**: An `AvroTurf::ConfluentSchemaRegistry` object used to store Avro schemas
|
64
64
|
so that they can be referenced by id. Either `schema_registry` or
|
65
65
|
`registry_url` must be configured.
|
66
66
|
* **registry_url**: URL for the schema registry. Either `schema_registry` or
|
data/avromatic.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_runtime_dependency 'virtus'
|
24
24
|
spec.add_runtime_dependency 'activesupport'
|
25
25
|
spec.add_runtime_dependency 'activemodel'
|
26
|
-
spec.add_runtime_dependency 'avro_turf', '>= 0.
|
26
|
+
spec.add_runtime_dependency 'avro_turf', '>= 0.8.0'
|
27
27
|
|
28
28
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
29
29
|
spec.add_development_dependency 'rake', '~> 10.0'
|
@@ -35,7 +35,7 @@ module Avromatic
|
|
35
35
|
delegate :model_key, to: :class
|
36
36
|
|
37
37
|
# @param *models [generated models] Models to register for decoding.
|
38
|
-
# @param schema_registry [
|
38
|
+
# @param schema_registry [AvroTurf::ConfluentSchemaRegistry] Optional schema
|
39
39
|
# registry client.
|
40
40
|
# @param registry_url [String] Optional URL for schema registry server.
|
41
41
|
def initialize(*models, schema_registry: nil, registry_url: nil)
|
@@ -43,7 +43,7 @@ module Avromatic
|
|
43
43
|
@schema_names_by_id = {}
|
44
44
|
@schema_registry = schema_registry ||
|
45
45
|
Avromatic.schema_registry ||
|
46
|
-
(registry_url && AvroTurf::
|
46
|
+
(registry_url && AvroTurf::ConfluentSchemaRegistry.new(registry_url, logger: Avromatic.logger)) ||
|
47
47
|
Avromatic.build_schema_registry
|
48
48
|
end
|
49
49
|
|
data/lib/avromatic/rspec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'avromatic/test/fake_schema_registry_server'
|
|
3
3
|
|
4
4
|
RSpec.configure do |config|
|
5
5
|
config.before(:each) do
|
6
|
-
WebMock.stub_request(:any, /^#{Avromatic.registry_url}/).to_rack(
|
7
|
-
|
6
|
+
WebMock.stub_request(:any, /^#{Avromatic.registry_url}/).to_rack(FakeConfluentSchemaRegistryServer)
|
7
|
+
FakeConfluentSchemaRegistryServer.clear
|
8
8
|
end
|
9
9
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'avro_turf'
|
2
|
-
require 'avro_turf/
|
2
|
+
require 'avro_turf/confluent_schema_registry'
|
3
3
|
|
4
4
|
module Avromatic
|
5
5
|
module CacheableSchemaRegistration
|
@@ -32,4 +32,4 @@ module Avromatic
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
AvroTurf::
|
35
|
+
AvroTurf::ConfluentSchemaRegistry.prepend(Avromatic::CacheableSchemaRegistration)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'avro_turf/test/fake_confluent_schema_registry_server'
|
2
|
+
|
3
|
+
# Add support for endpoint to lookup subject schema id by fingerprint.
|
4
|
+
FakeConfluentSchemaRegistryServer.class_eval do
|
5
|
+
SCHEMA_NOT_FOUND = FakeConfluentSchemaRegistryServer::SCHEMA_NOT_FOUND
|
6
|
+
SCHEMAS = FakeConfluentSchemaRegistryServer::SCHEMAS
|
7
|
+
SUBJECTS = FakeConfluentSchemaRegistryServer::SUBJECTS
|
8
|
+
|
9
|
+
get '/subjects/:subject/fingerprints/:fingerprint' do
|
10
|
+
subject = params[:subject]
|
11
|
+
halt(404, SCHEMA_NOT_FOUND) unless SUBJECTS.key?(subject)
|
12
|
+
|
13
|
+
fingerprint = params[:fingerprint]
|
14
|
+
fingerprint = fingerprint.to_i.to_s(16) if /^\d+$/ =~ fingerprint
|
15
|
+
|
16
|
+
schema_id = SCHEMAS.find_index do |schema|
|
17
|
+
Avro::Schema.parse(schema).sha256_fingerprint.to_s(16) == fingerprint
|
18
|
+
end
|
19
|
+
|
20
|
+
halt(404, SCHEMA_NOT_FOUND) unless schema_id && SUBJECTS[subject].include?(schema_id)
|
21
|
+
|
22
|
+
{ id: schema_id }.to_json
|
23
|
+
end
|
24
|
+
end
|
@@ -1,24 +1,6 @@
|
|
1
|
+
require 'avromatic/test/fake_confluent_schema_registry_server'
|
1
2
|
require 'avro_turf/test/fake_schema_registry_server'
|
2
3
|
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
SCHEMAS = FakeSchemaRegistryServer::SCHEMAS
|
7
|
-
SUBJECTS = FakeSchemaRegistryServer::SUBJECTS
|
8
|
-
|
9
|
-
get '/subjects/:subject/fingerprints/:fingerprint' do
|
10
|
-
subject = params[:subject]
|
11
|
-
halt(404, SCHEMA_NOT_FOUND) unless SUBJECTS.key?(subject)
|
12
|
-
|
13
|
-
fingerprint = params[:fingerprint]
|
14
|
-
fingerprint = fingerprint.to_i.to_s(16) if /^\d+$/ =~ fingerprint
|
15
|
-
|
16
|
-
schema_id = SCHEMAS.find_index do |schema|
|
17
|
-
Avro::Schema.parse(schema).sha256_fingerprint.to_s(16) == fingerprint
|
18
|
-
end
|
19
|
-
|
20
|
-
halt(404, SCHEMA_NOT_FOUND) unless schema_id && SUBJECTS[subject].include?(schema_id)
|
21
|
-
|
22
|
-
{ id: schema_id }.to_json
|
23
|
-
end
|
24
|
-
end
|
4
|
+
# This file is for back compatibility. The class has been renamed
|
5
|
+
# FakeConfluentSchemaRegistryServer, but avro_turf defines an alias for the
|
6
|
+
# old name, so we alias the require for now.
|
data/lib/avromatic/version.rb
CHANGED
data/lib/avromatic.rb
CHANGED
@@ -27,8 +27,8 @@ module Avromatic
|
|
27
27
|
|
28
28
|
def self.build_schema_registry
|
29
29
|
raise 'Avromatic must be configured with a registry_url' unless registry_url
|
30
|
-
AvroTurf::
|
31
|
-
AvroTurf::
|
30
|
+
AvroTurf::CachedConfluentSchemaRegistry.new(
|
31
|
+
AvroTurf::ConfluentSchemaRegistry.new(registry_url, logger: logger)
|
32
32
|
)
|
33
33
|
end
|
34
34
|
|
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: 0.
|
4
|
+
version: 0.18.0.rc0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Salsify Engineering
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avro
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
75
|
+
version: 0.8.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 0.8.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -273,6 +273,7 @@ files:
|
|
273
273
|
- lib/avromatic/railtie.rb
|
274
274
|
- lib/avromatic/rspec.rb
|
275
275
|
- lib/avromatic/schema_registry_patch.rb
|
276
|
+
- lib/avromatic/test/fake_confluent_schema_registry_server.rb
|
276
277
|
- lib/avromatic/test/fake_schema_registry_server.rb
|
277
278
|
- lib/avromatic/version.rb
|
278
279
|
- log/.gitkeep
|
@@ -291,9 +292,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
291
292
|
version: '0'
|
292
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
293
294
|
requirements:
|
294
|
-
- - "
|
295
|
+
- - ">"
|
295
296
|
- !ruby/object:Gem::Version
|
296
|
-
version:
|
297
|
+
version: 1.3.1
|
297
298
|
requirements: []
|
298
299
|
rubyforge_project:
|
299
300
|
rubygems_version: 2.6.10
|