Red FlatBuffers is a pure Ruby FlatBuffers implementation.
Red FlatBuffers can generate Ruby code that reads and writes (not implemented yet) FlatBuffers from .fbfs (binary FlatBuffers schema). Red FlatBuffers can't compile .fbs (FlatBuffers schema) to .fbfs. You need to use FlatBuffers to compile .fbs to .bfbs.
gem install red-flatbuffersGenerate .bfbs from .fbs by flatc that is provided by https://github.com/google/flatbuffers/ :
flatc \
--binary \
--schema \
--bfbs-builtins \
--bfbs-comments \
YOUR_SCHEMA.fbsThe order of arguments is important. You must specify --bfbs-builtins and --bfbs-comments AFTER --binary. If you specify them BEFORE --binary, they are ignored.
Generate Ruby code from .bfbs:
rbflatc YOUR_SCHEMA.bfbsIt generates Ruby code in the current directory. You can change it by --output-dir:
rbflatc --output-dir lib YOUR_SCHEMA.bfbsIf you want to wrap generate code by namespaces, you can use --outer-namespaces:
rbflatc \
--output-dir lib/my/namespace \
--outer-namespaces My::Namespace \
YOUR_SCHEMA.bfbsIf you want to read FlatBuffers data in a file, you can use File.open and IO::Buffer.map:
require "my/schema"
File.open("data.fbs", "rb") do |input|
buffer = IO::Buffer.map(input, nil, 0, IO::Buffer::READONLY)
schema = My::Schema.new(buffer)
# Use schema
endIf you have FlatBuffers data as String, you can just pass it to your generated Ruby code:
require "my/schema"
schema = My::Schema.new(data)
# Use schemaThis is not implemented yet.
- Sutou Kouhei <[email protected]>
Apache License 2.0. See doc/text/apache-2.0.txt for details.