class Avromatic::Model::Builder
This class implements generating models from Avro schemas.
Attributes
Public Class Methods
Source
# 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
For options see Avromatic::Model.build
Source
# File lib/avromatic/model/builder.rb, line 30 def self.name super || (@name ||= config.avro_schema.name.classify) end
Name is required for attribute validations on an anonymous class.
Calls superclass method
Source
# File lib/avromatic/model/builder.rb, line 39 def initialize(**options) @mod = Module.new @config = Avromatic::Model::Configuration.new(**options) define_included_method end
For options see Avromatic::Model.build
Public Instance Methods
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
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