avromatic 0.9.0 → 0.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc99203859058643dc1c9a0cef483351ef7510d4
4
- data.tar.gz: 74baf6ac9e646865dd0aac94b9fe442ed86a6a31
3
+ metadata.gz: 9363333d113fdde131539f8b2d49aa36570bac26
4
+ data.tar.gz: 22abde6607fa1214c5a29f109d3cedbbe0573ba6
5
5
  SHA512:
6
- metadata.gz: 35e1ca499095ef3bd68301fbc596b461c9dee294b85b987ffee59f29a5d70d7f8978dc203271745e28838c7ba40b7e67695ce78b8663caa55f35c41188cafb18
7
- data.tar.gz: 5ab412bfb6de7903c0a13effda1338caf160452ff4597d891d79ea01176f37a56b6811998192777ccb46c5723c02b3b623eeb9f33357b08222daa1484d098f7d
6
+ metadata.gz: 13f164b073113a5abf9287b4cc409a1588b6e328b2f079626bc83ffb768b9f8db6fd761f8bfb648f365bedc7b36a683e4d755e84558a9bb7a13236937a08bffc
7
+ data.tar.gz: edb4c66c1dbb1d1c22a0b24064b0ed0eae890c7d0a787f27e643a3010ed4f590c012c740e2c0b918919eaa071a14482933c4c1539ac36082c42d9ae1006adde5
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # avromatic changelog
2
2
 
3
+ ## v0.10.0 (unreleased)
4
+ - Add `Avromatic.on_initialize` proc that is called in Rails applications after
5
+ the initializers run and on code reloading.
6
+
3
7
  ## v0.9.0
4
8
  - Experimental: Add support for more than one non-null type in a union.
5
9
  - Allow nested models to be referenced and reused.
data/README.md CHANGED
@@ -162,22 +162,16 @@ Avromatic::Model.model(schema_name, :my_model
162
162
  nested_models: ModelRegistry.new)
163
163
  ```
164
164
 
165
- It is also possible to explicitly generate a nested model that should be reused
166
- and add it to the registry. This is useful when the nested model is extended:
165
+ Only models without a key schema can be used as nested models. When a model is
166
+ generated with just a value schema then it is automatically registered so that
167
+ it can be used as a nested model.
167
168
 
168
- ```ruby
169
- class UsefulSubrecord
170
- include Avromatic::Model.build(schema_name: 'useful_subrecord')
171
-
172
- def do_something_custom
173
- ...
174
- end
175
- end
176
- Avromatic.nested_models.register(UsefulSubrecord)
177
- ```
169
+ To extend a model that will be used as a nested model, you must ensure that it
170
+ is defined, which will register it, prior it being referenced by another model.
178
171
 
179
- With Rails, it may be necessary to perform this explicit registration in an
180
- initializer so that lazy class loading works correctly in development.
172
+ With Rails for example, it may be necessary to reference in an initializer
173
+ models that are extended and will be used as nested models so that classes load
174
+ in the correct order.
181
175
 
182
176
  #### Custom Types
183
177
 
@@ -315,15 +309,16 @@ The following validations are supported:
315
309
 
316
310
  - The size of the value for a fixed type field.
317
311
  - The value for an enum type field is in the declared set of values.
318
- - Presence of a value for required fields.
312
+ - Presence of a value for required fields. Empty arrays and maps are considered
313
+ valid for required fields.
314
+ - Validity of nested records, including records embedded in array, maps, and
315
+ unions.
319
316
 
320
317
  ### Unsupported/Future
321
318
 
322
319
  The following types/features are not supported for generated models:
323
320
 
324
321
  - Custom types for members within a union.
325
- - Reused models for nested records: Currently an anonymous model class is
326
- generated for each subrecord.
327
322
 
328
323
  ## Development
329
324
 
data/lib/avromatic.rb CHANGED
@@ -7,7 +7,7 @@ require 'avro_turf/messaging'
7
7
  module Avromatic
8
8
  class << self
9
9
  attr_accessor :schema_registry, :registry_url, :schema_store, :logger,
10
- :messaging, :type_registry, :nested_models
10
+ :messaging, :type_registry, :nested_models, :on_initialize
11
11
 
12
12
  delegate :register_type, to: :type_registry
13
13
  end
@@ -39,6 +39,11 @@ module Avromatic
39
39
  def self.build_messaging!
40
40
  self.messaging = build_messaging
41
41
  end
42
+
43
+ def self.prepare!
44
+ nested_models.clear
45
+ on_initialize.call if on_initialize
46
+ end
42
47
  end
43
48
 
44
49
  require 'avromatic/railtie' if defined?(Rails)
@@ -11,6 +11,10 @@ module Avromatic
11
11
  @hash = Hash.new
12
12
  end
13
13
 
14
+ def clear
15
+ @hash.clear
16
+ end
17
+
14
18
  def [](fullname)
15
19
  @hash.fetch(fullname)
16
20
  end
@@ -4,6 +4,10 @@ module Avromatic
4
4
  Avromatic.configure do |config|
5
5
  config.logger = Rails.logger
6
6
  end
7
+
8
+ Rails.configuration.to_prepare do
9
+ Avromatic.prepare!
10
+ end
7
11
  end
8
12
  end
9
13
  end
@@ -1,3 +1,3 @@
1
1
  module Avromatic
2
- VERSION = '0.9.0'.freeze
2
+ VERSION = '0.10.0.rc0'.freeze
3
3
  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: 0.9.0
4
+ version: 0.10.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: 2016-09-28 00:00:00.000000000 Z
11
+ date: 2016-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro
@@ -287,9 +287,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
287
  version: '0'
288
288
  required_rubygems_version: !ruby/object:Gem::Requirement
289
289
  requirements:
290
- - - ">="
290
+ - - ">"
291
291
  - !ruby/object:Gem::Version
292
- version: '0'
292
+ version: 1.3.1
293
293
  requirements: []
294
294
  rubyforge_project:
295
295
  rubygems_version: 2.4.8