protocolbuffers/protobuf

Cannot assign an array to a repeated field in Ruby

Open

#7 161 ouverte le 31 janv. 2020

Voir sur GitHub
 (1 commentaire) (5 réactions) (0 assignés)C++ (16 128 forks)batch import
help wantedruby

Métriques du dépôt

Stars
 (71 223 stars)
Métriques de merge PR
 (Merge moyen 2j 11h) (185 PRs mergées en 30 j)

Description

What language does this apply to? Ruby

Describe the problem you are trying to solve. Consider trying to do this:

#!/usr/bin/ruby
require 'google/protobuf'

Google::Protobuf::DescriptorPool.generated_pool.build do
  add_file("google/ads/googleads/v2/services/campaign_budget_service.proto", :syntax => :proto3) do
    add_message "google.ads.googleads.v2.services.MutateCampaignBudgetsRequest" do
      optional :customer_id, :string, 1
      repeated :operations, :message, 2, "google.ads.googleads.v2.services.CampaignBudgetOperation"
    end

    add_message "google.ads.googleads.v2.services.CampaignBudgetOperation" do
      oneof :operation do
        optional :remove, :string, 1
      end
    end
  end
end

module Google
  module Ads
    module GoogleAds
      module V2
        module Services
          MutateCampaignBudgetsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v2.services.MutateCampaignBudgetsRequest").msgclass
          CampaignBudgetOperation = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v2.services.CampaignBudgetOperation").msgclass
        end
      end
    end
  end
end

include Google::Ads::GoogleAds::V2::Services

def main
  r = MutateCampaignBudgetsRequest.new
  r.operations = [CampaignBudgetOperation.new]
end

if __FILE__ == $0
  main
end

currently protobuf gives this error:

Traceback (most recent call last):
	2: from hi.rb:40:in `<main>'
	1: from hi.rb:36:in `main'
hi.rb:36:in `method_missing': Expected repeated field array (Google::Protobuf::TypeError)

Describe the solution you'd like Assigning an array to a repeated field should work if all the values are of the right type

Describe alternatives you've considered N/A Additional context my ldap pnlpn@ for on-corp discussions.

Guide contributeur