我正在使用具有Google协议缓冲区的ruby应用程序。
我的原型文件:
syntax = 'proto3'
message QuestionMessage {
int32 id = 1;
string question = 2;
int32 font_id = 3;
repeated int32 answers = 4 [packed=true];
}
当我运行protoc时,它会生成正确的ruby文件,但是:packed =>重复的int32命名答案缺少true。 生成的代码:
add_message "QuestionMessage" do
optional :id, :int32, 1
optional :question, :string, 2
optional :font_id, :int32, 3
repeated :answers, :int32, 4
end
我目前认为我的protoc没有为ruby文件生成正确的东西。但奇怪的是我有libprotoc版本3.1.0(从源代码构建),项目的gemfile也有版本3.1.0,除了生成:packed =>之外,一切都可以工作(编码和制作对象)。真正。有人能帮助我吗?我全神贯注但却找不到有同样问题的人。 B.t.w.添加:packet =>真的不起作用,因为谷歌不喜欢这样。
修改
我找到了解决方案。我用这个gem来生成我的ruby protoc文件。这些文件我可以编辑而不是google-protobuf gem生成的文件,你不能这样做。然后我补充说:packed =>通过脚本真实。不是最好的解决方案,但它是一种解决方案..