Beefcake文档翻译:Beefcake介绍,Beefcake
这是一个纯由Ruby实现的Google Protocol Buffers库。它只提供与Buf相关的功能;ProtoBuf。
gem install beefcake
require 'beefcake'
class Variety
include Beefcake :: Message
# Required
required :x , :int32 , 1
required :y , :int32 , 2
# Optional
optional :tag , :string , 3
# Repeated
repeated :ary , :fixed64 , 4
repeated :pary , :fixed64 , 5 , :packed => true
# Enums - 直接使用模块 ( Module )就好了 (注意 :默认值是可选的 )
module Foonum
A = 1
B = 2
end
# 目前 ,默认 值只会在对消息解析的末期进行设置,
# 而不会在对象创建时就设置。
optional :foo , Foonum , 6 , :default => Foonum :: B
end
# 可使用散列表风格来创建新消息:
x = Variety.new(:x => 1, :y => 2)
# 可使用访问方法来单独设置各个字段:
x = Variety.new
x.x = 1
x.y = 2
# 妳也可以使用散列表(Hash)语法来访问字段:
x[:x] # => 1
x[:y] = 4
x # => <Variety x: 1, y: 4>
可使用一个能够对 << 进行响应的对象来接收编码结果
# 参考上面的代码示例以了解Variety的定义
x = Variety.new(:x => 1, :y => 2)
# 例如,妳可以将消息编码到一个字符串(String)中:
s = ""
x.encode(s)
s # => "\b\x01\x10\x02)\0"
# 如果妳不将消息编码到任何对象中,那么,会返回一个新建的Beefcake::Buffer:
x.encode # => #<Beefcake::Buffer:0x007fbfe1867ab0 @buf="\b\x01\x10\x02)\0">
# 该缓冲对象也可转换为一个字符串(String):
x.encode.to_s # => "\b\x01\x10\x02)\0"
# 参考上面的代码示例以了解Variety的定义
x = Variety.new(:x => 1, :y => 2)
# 可以从一个Beefcake::Buffer中解码数据
encoded = x.encode
Variety.decode(encoded) # => <Variety x: 1, y: 2, pary: [], foo: B(2)>
# 也可以以同样的方法来从字符串(String)中解码数据:
Variety.decode(encoded.to_s) # => <Variety x: 1, y: 2, pary: [], foo: B(2)>
# 妳还可以使用新数据来更新一个Beefcake::Message 实例:
new_data = Variety.new(x: 12345, y: 2).encode
Variety.decoded(new_data, x)
x # => <Variety x: 12345, y: 2, pary: [], foo: B(2)>
protoc --beefcake_out 输出/路径 -I 指向/proto/文件/包含目录/的路径 指向/proto/文件/的路径.proto
可以设置 BEEFCAKE_NAMESPACE 变量,以便将这些类生成在特定的命名空间下。 (例如 , App::Foo::Bar)
Ruby中应当有第一等的ProtoBuf支持。对于我来说,其它的那些库,并不那么"Ruby",并且难用。
这个库在开发过程中一直遵循了EventMachine的原则。并不是简单地使用了阻塞式输入输出。
源代码: https://github.com/protobuf-ruby/beefcake
•.可选(Optional)字段
•. 必选(Required)字段
•.重复(Repeated)字段
•.紧缩重复(Packed Repeated)字段
•. 变长整数(Varint)字段
•.32位字段
•.64位字段
•.长度定界(Length-delimited)字段
•.嵌套消息
•.未知字段会被忽略(目前是这样的)
•.枚举(Enums)
•. 默认 值 (例如 , optional :foo, :string, :default => "bar" )
•.使用变长整数编码的长度定界消息流(Varint-encoded length-delimited message streams)
•.导入(Imports)
•.在代码生成中使用包
•. 组(Groups)(在访问旧版本的protos 的过程中会有用)
http://code.google.com/apis/protocolbuffers/docs/encoding.html
rake test
目前 ,Beefcake 已经在以下版本的Ruby中通过测试:
•.Ruby 1.9.3
•.Ruby 2.0.0
•.Ruby 2.1.0
•.Ruby 2.1.1
•.Ruby 2.1.2
•.JRuby ,运行于1.9模式
素人加奈
素人加奈
素人加奈
未知美人
Your opinionsHxLauncher: Launch Android applications by voice commands