class AvroPinions::Message

Public Instance Methods

avro_schema() click to toggle source
# File lib/avro_pinions/message.rb, line 50
def avro_schema
  @avro_schema ||= AvroPinions.schema_registry.schema(schema, namespace)
end
codec() click to toggle source
# File lib/avro_pinions/message.rb, line 46
def codec
  @codec ||= AvroPinions::Codec.new(avro_schema)
end
encode() click to toggle source
# File lib/avro_pinions/message.rb, line 38
def encode
  codec.encode(record)
end
namespace() click to toggle source
# File lib/avro_pinions/message.rb, line 22
def namespace
  if defined?(self.class::NAMESPACE)
    self.class::NAMESPACE
  else
    raise AvroPinions::NotFullyImplementedError, 'No Namespace defined'
  end
end
publish() click to toggle source
# File lib/avro_pinions/message.rb, line 34
def publish
  AvroPinions.publisher.publish(topic, record)
end
record() click to toggle source
# File lib/avro_pinions/message.rb, line 30
def record
  raise AvroPinions::NotFullyImplementedError, 'record method not implemented'
end
schema() click to toggle source

Schema is inferred to be the .avsc file in the schemas folder with the name as given

# File lib/avro_pinions/message.rb, line 14
def schema
  if defined?(self.class::SCHEMA)
    self.class::SCHEMA
  else
    raise AvroPinions::NotFullyImplementedError, 'No Schema defined'
  end
end
topic() click to toggle source
# File lib/avro_pinions/message.rb, line 3
def topic
  # self.class::SYMBOL looks up a class constant in a child class
  if defined?(self.class::TOPIC)
    self.class::TOPIC
  else
    raise AvroPinions::NotFullyImplementedError, 'No Topic defined'
  end
end
valid?() click to toggle source
# File lib/avro_pinions/message.rb, line 42
def valid?
  Avro::Schema.validate(avro_schema, AvroPinions::Codec.pedantic_data(record))
end