Ruby生成的grpcclass服务名冲突

Ruby generated grpc class service name conflict

我有一个奇怪的情况,消息名称与我的原型定义中生成的 class 相同,即 Service

例如: 原型文件

service Dummy {
rpc Register(RegisterServiceRequest) returns Service {}
}

message Service {
    string name = 1;
}

当我生成 grpc 服务时,它变成了

pb.rb 文件

module ...
  module ...
    class Service

      include GRPC::GenericService

      self.marshal_class_method = :encode
      self.unmarshal_class_method = :decode
      self.service_name = 'some.Dummy'


      rpc :Register, RegisterServiceRequest, Service
  
  end

    Stub = Service.rpc_stub_class
  end
end

当我尝试 运行 时,它低于 argumenterror

/Library/Ruby/Gems/2.6.0/gems/grpc-1.23.0-universal-darwin/src/ruby/lib/grpc/generic/service.rb:126:in assert_can_marshal

/Library/Ruby/Gems/2.6.0/gems/grpc-1.23.0-universal-darwin/src/ruby/lib/grpc/generic/service.rb:94:in`rpc'

如何解决这个问题?生成服务 pb.rb 文件

时是否可以覆盖 class Service 的名称

冲突在这里:

# ⇓⇓⇓⇓⇓⇓⇓
  service Dummy {
    ...
#         ⇓⇓⇓⇓⇓⇓⇓
  message Service

国内有GRPCclassService。重命名你的使用有点像 message MessageService.