avromatic 0.9.0 → 0.10.0.rc0

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
  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