class Avromatic::Model::Builder
This class implements generating models from Avro schemas.
Attributes
config[R]
mod[R]
Public Class Methods
model(**options, &block)
click to toggle source
For options see Avromatic::Model.build
# File lib/avromatic/model/builder.rb, line 25 def self.model(**options, &block) Class.new do include Avromatic::Model::Builder.new(**options).mod # Name is required for attribute validations on an anonymous class. def self.name super || (@name ||= config.avro_schema.name.classify) end class_eval(&block) if block end end
name()
click to toggle source
Name is required for attribute validations on an anonymous class.
Calls superclass method
# File lib/avromatic/model/builder.rb, line 30 def self.name super || (@name ||= config.avro_schema.name.classify) end
new(**options)
click to toggle source
For options see Avromatic::Model.build
# File lib/avromatic/model/builder.rb, line 39 def initialize(**options) @mod = Module.new @config = Avromatic::Model::Configuration.new(**options) define_included_method end
Public Instance Methods
inclusions()
click to toggle source
# File lib/avromatic/model/builder.rb, line 45 def inclusions [ Avromatic::Model::Configurable, Avromatic::Model::NestedModels, Avromatic::Model::Validation, Avromatic::Model::Attributes, Avromatic::Model::ValueObject, Avromatic::Model::RawSerialization, Avromatic::Model::MessagingSerialization ] end
Private Instance Methods
define_included_method()
click to toggle source
# File lib/avromatic/model/builder.rb, line 59 def define_included_method local_mod = mod local_builder = self mod.define_singleton_method(:included) do |model_class| model_class.include(*local_builder.inclusions) model_class.config = local_builder.config model_class.add_avro_fields(local_mod) end end