Ruby сгенерированный grp c конфликт имени службы класса - PullRequest
0 голосов
/ 23 февраля 2020

У меня странная ситуация, когда имя сообщения совпадает с сгенерированным классом в моем прото-определении, то есть Service

для ex: proto-файла

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

message Service {
    string name = 1;
}

, когда я генерирую grp c служба становится

файл 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

/ Библиотека / Ruby /Gems/2.6.0/gems/grpc-1.23.0-universal-darwin/src/ruby/lib/grpc/generic/service.rb:94:in`rpc'

как решить проблему? Можно ли переопределить имя class Service при создании файла pb.rb службы

1 Ответ

1 голос
/ 23 февраля 2020

Клаус sh находится здесь:

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

Есть домест c GRP C класс Service. Переименуйте свой, чтобы использовать что-то вроде message MessageService.

...