Ruby中的Avro序列化-如何写入字符串/缓冲区而不是文件

Ruby中的Avro序列化-如何写入字符串/缓冲区而不是文件,ruby,serialization,avro,Ruby,Serialization,Avro,我正在尝试用Ruby进行avro序列化。我已经编写了JSON模式,但是我喜欢在Ruby中将序列化数据作为字节,而不是写入文件 我的代码挂起了如下内容: SCHEMA = { "type": "record", "name": "User", "fields" : [ {"name": "name", "type": "string"}, {"na

我正在尝试用Ruby进行avro序列化。我已经编写了JSON模式,但是我喜欢在Ruby中将序列化数据作为字节,而不是写入文件

我的代码挂起了如下内容:

SCHEMA = {
           "type": "record",
           "name": "User",
           "fields" :
             [
               {"name": "name", "type": "string"},
               {"name": "id", "type": "long"},
               {"name": "city", "type": "string"}
             ]
         }.to_json

schema = Avro::Schema.parse(SCHEMA)
dw = Avro::IO::DatumWriter.new(schema)
buffer = StringIO.new
encoder = Avro::IO::BinaryEncoder.new(buffer)
???
我有name、id和city的值,不知道如何创建用户对象并将其序列化为字符串/字节缓冲区。

我自己想:

schema = Avro::Schema.parse(SCHEMA)
dw = Avro::IO::DatumWriter.new(schema)
buffer = StringIO.new
encoder = Avro::IO::BinaryEncoder.new(buffer)
datum = Hash["name" =>name, "id" => id, "city" => city]
dw.write(datum, encoder)
缓冲区具有生成的avro序列化字节

看起来Ruby中还没有生成Avro客户端代码。我们必须像我在for datum字段中所做的那样,以Ruby哈希的形式传递数据