google-cloud-datastore 1.5.1 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72ce967e2225a7f45b099b3183e72b450e2a424540423ccdbcecd3f04d4df5a7
4
- data.tar.gz: 7bc5dc5ef826d16c6e3732ed496deacb53e239c3a0583fa46babeeb5253bc91c
3
+ metadata.gz: 264365e0f5bcb539fbcb7400f635ce7846da49d69d40ebd0dd4bd01e8337f82a
4
+ data.tar.gz: b63520b3c479e80a74d3f5343cecf957e369f99bf2b9aba687cef9d732c3aa46
5
5
  SHA512:
6
- metadata.gz: 0babd961bc284b94502cb3dcccfa5da0fea60fd6277ca5c8da2a5527e9cde189d0d18eb1ac6d3b66f0f1676e81d0eddfdd5e068cbfe3a3da0c1f07e05651fb34
7
- data.tar.gz: 03d6099865662209ce9824bfd3601391b78996d62377b34d80bbaff2c8f9b25fe04ff8c8563aa8fcdf24a000850d20df1243ddd96b963ca80a2906475ea1f421
6
+ metadata.gz: 388076fda8dfc3ee025da5346cd390d5db31659f8d859f6da73dd7621ecfd5e16a0c9edc90e8e83d3f4f8847a15cc05557ac8b5c06f939b566a1b87ee5b1de7f
7
+ data.tar.gz: 790522bf2b042596ed3c4196a37f8a40b5fd96221fae6c97046e02f59f4ef269e7aaf0c89418db385532a456654aade40fd09d88c413b351985faf9a5a67b246
data/AUTHENTICATION.md CHANGED
@@ -2,20 +2,39 @@
2
2
 
3
3
  In general, the google-cloud-datastore library uses [Service
4
4
  Account](https://cloud.google.com/iam/docs/creating-managing-service-accounts)
5
- credentials to connect to Google Cloud services. When running on Compute Engine
5
+ credentials to connect to Google Cloud services. When running within [Google
6
+ Cloud Platform environments](#google-cloud-platform-environments)
6
7
  the credentials will be discovered automatically. When running on other
7
8
  environments, the Service Account credentials can be specified by providing the
8
9
  path to the [JSON
9
10
  keyfile](https://cloud.google.com/iam/docs/managing-service-account-keys) for
10
- the account (or the JSON itself) in environment variables. Additionally, Cloud
11
- SDK credentials can also be discovered automatically, but this is only
12
- recommended during development.
11
+ the account (or the JSON itself) in [environment
12
+ variables](#environment-variables). Additionally, Cloud SDK credentials can also
13
+ be discovered automatically, but this is only recommended during development.
14
+
15
+ ## Quickstart
16
+
17
+ 1. [Create a service account and credentials](#creating-a-service-account).
18
+ 2. Set the [environment variable](#environment-variables).
19
+
20
+ ```sh
21
+ export DATASTORE_CREDENTIALS=/path/to/json`
22
+ ```
23
+
24
+ 3. Initialize the client.
25
+
26
+ ```ruby
27
+ require "google/cloud/datastore"
28
+
29
+ client = Google::Cloud::Datastore.new
30
+ ```
13
31
 
14
32
  ## Project and Credential Lookup
15
33
 
16
- The google-cloud-datastore library aims to make authentication as simple as
17
- possible, and provides several mechanisms to configure your system without
18
- providing **Project ID** and **Service Account Credentials** directly in code.
34
+ The google-cloud-datastore library aims to make authentication
35
+ as simple as possible, and provides several mechanisms to configure your system
36
+ without providing **Project ID** and **Service Account Credentials** directly in
37
+ code.
19
38
 
20
39
  **Project ID** is discovered in the following order:
21
40
 
@@ -23,6 +42,7 @@ providing **Project ID** and **Service Account Credentials** directly in code.
23
42
  2. Specify project ID in configuration
24
43
  3. Discover project ID in environment variables
25
44
  4. Discover GCE project ID
45
+ 5. Discover project ID in credentials JSON
26
46
 
27
47
  **Credentials** are discovered in the following order:
28
48
 
@@ -73,12 +93,12 @@ environment variable, or the **Credentials JSON** itself can be stored for
73
93
  environments such as Docker containers where writing files is difficult or not
74
94
  encouraged.
75
95
 
76
- The environment variables that Datastore checks for project ID are:
96
+ The environment variables that google-cloud-datastore checks for project ID are:
77
97
 
78
98
  1. `DATASTORE_PROJECT`
79
99
  2. `GOOGLE_CLOUD_PROJECT`
80
100
 
81
- The environment variables that Datastore checks for credentials are configured on {Google::Cloud::Datastore::V1::Credentials}:
101
+ The environment variables that google-cloud-datastore checks for credentials are configured on {Google::Cloud::Datastore::V1::Credentials}:
82
102
 
83
103
  1. `DATASTORE_CREDENTIALS` - Path to JSON file, or JSON contents
84
104
  2. `DATASTORE_KEYFILE` - Path to JSON file, or JSON contents
@@ -92,7 +112,7 @@ require "google/cloud/datastore"
92
112
  ENV["DATASTORE_PROJECT"] = "my-project-id"
93
113
  ENV["DATASTORE_CREDENTIALS"] = "path/to/keyfile.json"
94
114
 
95
- datastore = Google::Cloud::Datastore.new
115
+ client = Google::Cloud::Datastore.new
96
116
  ```
97
117
 
98
118
  ### Configuration
@@ -107,7 +127,7 @@ Google::Cloud::Datastore.configure do |config|
107
127
  config.credentials = "path/to/keyfile.json"
108
128
  end
109
129
 
110
- datastore = Google::Cloud::Datastore.new
130
+ client = Google::Cloud::Datastore.new
111
131
  ```
112
132
 
113
133
  ### Cloud SDK
@@ -140,7 +160,8 @@ Google Cloud requires a **Project ID** and **Service Account Credentials** to
140
160
  connect to the APIs. You will use the **Project ID** and **JSON key file** to
141
161
  connect to most services with google-cloud-datastore.
142
162
 
143
- If you are not running this client on Google Compute Engine, you need a Google
163
+ If you are not running this client within [Google Cloud Platform
164
+ environments](#google-cloud-platform-environments), you need a Google
144
165
  Developers service account.
145
166
 
146
167
  1. Visit the [Google Developers Console][dev-console].
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Release History
2
2
 
3
+ ### 1.5.2 / 2019-04-29
4
+
5
+ * Add AUTHENTICATION.md guide.
6
+ * Update generated documentation.
7
+ * Extract gRPC header values from request.
8
+
3
9
  ### 1.5.1 / 2019-02-13
4
10
 
5
11
  * Add `ReadOnlyTransaction` convenience methods:
@@ -63,7 +63,7 @@ module Google
63
63
 
64
64
  # @private byte array as a string
65
65
  def to_grpc
66
- Convert.decode_bytes(@cursor)
66
+ Convert.decode_bytes @cursor
67
67
  end
68
68
 
69
69
  # @private byte array as a string
@@ -296,7 +296,7 @@ module Google
296
296
  returned_keys = commit_res.mutation_results.map(&:key)
297
297
  returned_keys.each_with_index do |key, index|
298
298
  next if entities[index].nil?
299
- entities[index].key = Key.from_grpc(key) unless key.nil?
299
+ entities[index].key = Key.from_grpc key unless key.nil?
300
300
  end
301
301
  entities.each { |e| e.key.freeze unless e.persisted? }
302
302
  entities
@@ -540,7 +540,7 @@ module Google
540
540
  raise err if Time.now - start_time > deadline
541
541
 
542
542
  # Sleep with incremental backoff
543
- sleep(backoff *= 1.3)
543
+ sleep backoff *= 1.3
544
544
 
545
545
  # Create new transaction and retry the block
546
546
  tx = Transaction.new service, previous_transaction: tx.id
@@ -170,7 +170,7 @@ module Google
170
170
  def all request_limit: nil
171
171
  request_limit = request_limit.to_i if request_limit
172
172
  unless block_given?
173
- return enum_for(:all, request_limit: request_limit)
173
+ return enum_for :all, request_limit: request_limit
174
174
  end
175
175
  results = self
176
176
  loop do
@@ -211,7 +211,7 @@ module Google
211
211
  # end
212
212
  #
213
213
  def each_with_cursor
214
- return enum_for(:each_with_cursor) unless block_given?
214
+ return enum_for :each_with_cursor unless block_given?
215
215
  zip(cursors).each { |r, c| yield [r, c] }
216
216
  end
217
217
 
@@ -269,7 +269,7 @@ module Google
269
269
  def all request_limit: nil
270
270
  request_limit = request_limit.to_i if request_limit
271
271
  unless block_given?
272
- return enum_for(:all, request_limit: request_limit)
272
+ return enum_for :all, request_limit: request_limit
273
273
  end
274
274
  results = self
275
275
  loop do
@@ -338,7 +338,7 @@ module Google
338
338
  def all_with_cursor request_limit: nil
339
339
  request_limit = request_limit.to_i if request_limit
340
340
  unless block_given?
341
- return enum_for(:all_with_cursor, request_limit: request_limit)
341
+ return enum_for :all_with_cursor, request_limit: request_limit
342
342
  end
343
343
  results = self
344
344
 
@@ -277,9 +277,9 @@ module Google
277
277
  elsif pe_id_or_name.is_a? String
278
278
  path_args[:name] = pe_id_or_name unless pe_id_or_name.empty?
279
279
  end
280
- Google::Datastore::V1::Key::PathElement.new(path_args)
280
+ Google::Datastore::V1::Key::PathElement.new path_args
281
281
  end
282
- grpc = Google::Datastore::V1::Key.new(path: grpc_path)
282
+ grpc = Google::Datastore::V1::Key.new path: grpc_path
283
283
  if project || namespace
284
284
  grpc.partition_id = Google::Datastore::V1::PartitionId.new(
285
285
  project_id: project.to_s, namespace_id: namespace.to_s
@@ -305,7 +305,7 @@ module Google
305
305
  key.project = key_grpc.partition_id.project_id
306
306
  key.namespace = key_grpc.partition_id.namespace_id
307
307
  end
308
- key.parent = Key.from_grpc(key_grpc) if key_grpc.path.count > 0
308
+ key.parent = Key.from_grpc key_grpc if key_grpc.path.count > 0
309
309
  # Freeze the key to make it immutable.
310
310
  key.freeze
311
311
  key
@@ -298,7 +298,7 @@ module Google
298
298
  # tasks = datastore.run query
299
299
  #
300
300
  def limit num
301
- @grpc.limit = Google::Protobuf::Int32Value.new(value: num)
301
+ @grpc.limit = Google::Protobuf::Int32Value.new value: num
302
302
 
303
303
  self
304
304
  end
@@ -333,7 +333,7 @@ module Google
333
333
  returned_keys = commit_res.mutation_results.map(&:key)
334
334
  returned_keys.each_with_index do |key, index|
335
335
  next if entities[index].nil?
336
- entities[index].key = Key.from_grpc(key) unless key.nil?
336
+ entities[index].key = Key.from_grpc key unless key.nil?
337
337
  end
338
338
  # Make sure all entity keys are frozen so all show as persisted
339
339
  entities.each { |e| e.key.freeze unless e.persisted? }
@@ -169,37 +169,58 @@ module Google
169
169
  @lookup = Google::Gax.create_api_call(
170
170
  @datastore_stub.method(:lookup),
171
171
  defaults["lookup"],
172
- exception_transformer: exception_transformer
172
+ exception_transformer: exception_transformer,
173
+ params_extractor: proc do |request|
174
+ {'project_id' => request.project_id}
175
+ end
173
176
  )
174
177
  @run_query = Google::Gax.create_api_call(
175
178
  @datastore_stub.method(:run_query),
176
179
  defaults["run_query"],
177
- exception_transformer: exception_transformer
180
+ exception_transformer: exception_transformer,
181
+ params_extractor: proc do |request|
182
+ {'project_id' => request.project_id}
183
+ end
178
184
  )
179
185
  @begin_transaction = Google::Gax.create_api_call(
180
186
  @datastore_stub.method(:begin_transaction),
181
187
  defaults["begin_transaction"],
182
- exception_transformer: exception_transformer
188
+ exception_transformer: exception_transformer,
189
+ params_extractor: proc do |request|
190
+ {'project_id' => request.project_id}
191
+ end
183
192
  )
184
193
  @commit = Google::Gax.create_api_call(
185
194
  @datastore_stub.method(:commit),
186
195
  defaults["commit"],
187
- exception_transformer: exception_transformer
196
+ exception_transformer: exception_transformer,
197
+ params_extractor: proc do |request|
198
+ {'project_id' => request.project_id}
199
+ end
188
200
  )
189
201
  @rollback = Google::Gax.create_api_call(
190
202
  @datastore_stub.method(:rollback),
191
203
  defaults["rollback"],
192
- exception_transformer: exception_transformer
204
+ exception_transformer: exception_transformer,
205
+ params_extractor: proc do |request|
206
+ {'project_id' => request.project_id}
207
+ end
193
208
  )
194
209
  @allocate_ids = Google::Gax.create_api_call(
195
210
  @datastore_stub.method(:allocate_ids),
196
211
  defaults["allocate_ids"],
197
- exception_transformer: exception_transformer
212
+ exception_transformer: exception_transformer,
213
+ params_extractor: proc do |request|
214
+ {'project_id' => request.project_id}
215
+ end
198
216
  )
199
217
  @reserve_ids = Google::Gax.create_api_call(
200
218
  @datastore_stub.method(:reserve_ids),
201
219
  defaults["reserve_ids"],
202
- exception_transformer: exception_transformer
220
+ exception_transformer: exception_transformer,
221
+ params_extractor: proc do |request|
222
+ {'project_id' => request.project_id}
223
+ end
203
224
  )
204
225
  end
205
226
 
@@ -67,7 +67,8 @@ module Google
67
67
  # The GQL query to run.
68
68
  class RunQueryRequest; end
69
69
 
70
- # The response for {Google::Datastore::V1::Datastore::RunQuery Datastore::RunQuery}.
70
+ # The response for
71
+ # {Google::Datastore::V1::Datastore::RunQuery Datastore::RunQuery}.
71
72
  # @!attribute [rw] batch
72
73
  # @return [Google::Datastore::V1::QueryResultBatch]
73
74
  # A batch of query results (always present).
@@ -76,7 +77,8 @@ module Google
76
77
  # The parsed form of the `GqlQuery` from the request, if it was set.
77
78
  class RunQueryResponse; end
78
79
 
79
- # The request for {Google::Datastore::V1::Datastore::BeginTransaction Datastore::BeginTransaction}.
80
+ # The request for
81
+ # {Google::Datastore::V1::Datastore::BeginTransaction Datastore::BeginTransaction}.
80
82
  # @!attribute [rw] project_id
81
83
  # @return [String]
82
84
  # The ID of the project against which to make the request.
@@ -85,7 +87,8 @@ module Google
85
87
  # Options for a new transaction.
86
88
  class BeginTransactionRequest; end
87
89
 
88
- # The response for {Google::Datastore::V1::Datastore::BeginTransaction Datastore::BeginTransaction}.
90
+ # The response for
91
+ # {Google::Datastore::V1::Datastore::BeginTransaction Datastore::BeginTransaction}.
89
92
  # @!attribute [rw] transaction
90
93
  # @return [String]
91
94
  # The transaction identifier (always present).
@@ -101,8 +104,9 @@ module Google
101
104
  # {Google::Datastore::V1::Datastore::BeginTransaction Datastore::BeginTransaction}.
102
105
  class RollbackRequest; end
103
106
 
104
- # The response for {Google::Datastore::V1::Datastore::Rollback Datastore::Rollback}.
105
- # (an empty message).
107
+ # The response for
108
+ # {Google::Datastore::V1::Datastore::Rollback Datastore::Rollback}. (an empty
109
+ # message).
106
110
  class RollbackResponse; end
107
111
 
108
112
  # The request for {Google::Datastore::V1::Datastore::Commit Datastore::Commit}.
@@ -139,7 +143,8 @@ module Google
139
143
  MODE_UNSPECIFIED = 0
140
144
 
141
145
  # Transactional: The mutations are either all applied, or none are applied.
142
- # Learn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions).
146
+ # Learn about transactions
147
+ # [here](https://cloud.google.com/datastore/docs/concepts/transactions).
143
148
  TRANSACTIONAL = 1
144
149
 
145
150
  # Non-transactional: The mutations may not apply as all or none.
@@ -158,7 +163,8 @@ module Google
158
163
  # updated.
159
164
  class CommitResponse; end
160
165
 
161
- # The request for {Google::Datastore::V1::Datastore::AllocateIds Datastore::AllocateIds}.
166
+ # The request for
167
+ # {Google::Datastore::V1::Datastore::AllocateIds Datastore::AllocateIds}.
162
168
  # @!attribute [rw] project_id
163
169
  # @return [String]
164
170
  # The ID of the project against which to make the request.
@@ -168,14 +174,16 @@ module Google
168
174
  # No key may be reserved/read-only.
169
175
  class AllocateIdsRequest; end
170
176
 
171
- # The response for {Google::Datastore::V1::Datastore::AllocateIds Datastore::AllocateIds}.
177
+ # The response for
178
+ # {Google::Datastore::V1::Datastore::AllocateIds Datastore::AllocateIds}.
172
179
  # @!attribute [rw] keys
173
180
  # @return [Array<Google::Datastore::V1::Key>]
174
181
  # The keys specified in the request (in the same order), each with
175
182
  # its key path completed with a newly allocated ID.
176
183
  class AllocateIdsResponse; end
177
184
 
178
- # The request for {Google::Datastore::V1::Datastore::ReserveIds Datastore::ReserveIds}.
185
+ # The request for
186
+ # {Google::Datastore::V1::Datastore::ReserveIds Datastore::ReserveIds}.
179
187
  # @!attribute [rw] project_id
180
188
  # @return [String]
181
189
  # The ID of the project against which to make the request.
@@ -188,7 +196,8 @@ module Google
188
196
  # auto-allocated.
189
197
  class ReserveIdsRequest; end
190
198
 
191
- # The response for {Google::Datastore::V1::Datastore::ReserveIds Datastore::ReserveIds}.
199
+ # The response for
200
+ # {Google::Datastore::V1::Datastore::ReserveIds Datastore::ReserveIds}.
192
201
  class ReserveIdsResponse; end
193
202
 
194
203
  # A mutation to apply to an entity.
@@ -259,8 +268,10 @@ module Google
259
268
  # Options for beginning a new transaction.
260
269
  #
261
270
  # Transactions can be created explicitly with calls to
262
- # {Google::Datastore::V1::Datastore::BeginTransaction Datastore::BeginTransaction} or implicitly by setting
263
- # {Google::Datastore::V1::ReadOptions#new_transaction ReadOptions#new_transaction} in read requests.
271
+ # {Google::Datastore::V1::Datastore::BeginTransaction Datastore::BeginTransaction}
272
+ # or implicitly by setting
273
+ # {Google::Datastore::V1::ReadOptions#new_transaction ReadOptions#new_transaction}
274
+ # in read requests.
264
275
  # @!attribute [rw] read_write
265
276
  # @return [Google::Datastore::V1::TransactionOptions::ReadWrite]
266
277
  # The transaction should allow both reads and writes.
@@ -34,7 +34,8 @@ module Google
34
34
  #
35
35
  # Foreign partition IDs (in which the project ID does
36
36
  # not match the context project ID ) are discouraged.
37
- # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
37
+ # Reads and writes of foreign partition IDs may fail if the project is not in
38
+ # an active state.
38
39
  # @!attribute [rw] project_id
39
40
  # @return [String]
40
41
  # The ID of the project to which the entities belong.
@@ -128,8 +129,8 @@ module Google
128
129
  # @!attribute [rw] string_value
129
130
  # @return [String]
130
131
  # A UTF-8 encoded string value.
131
- # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
132
- # Otherwise, may be set to at least 1,000,000 bytes.
132
+ # When `exclude_from_indexes` is false (it is indexed) , may have at most
133
+ # 1500 bytes. Otherwise, may be set to at least 1,000,000 bytes.
133
134
  # @!attribute [rw] blob_value
134
135
  # @return [String]
135
136
  # A blob value.
@@ -25,12 +25,12 @@ module Google
25
25
  # The version of the entity, a strictly positive number that monotonically
26
26
  # increases with changes to the entity.
27
27
  #
28
- # This field is set for {Google::Datastore::V1::EntityResult::ResultType::FULL `FULL`} entity
29
- # results.
28
+ # This field is set for
29
+ # {Google::Datastore::V1::EntityResult::ResultType::FULL `FULL`} entity results.
30
30
  #
31
- # For {Google::Datastore::V1::LookupResponse#missing missing} entities in `LookupResponse`, this
32
- # is the version of the snapshot that was used to look up the entity, and it
33
- # is always set except for eventually consistent reads.
31
+ # For {Google::Datastore::V1::LookupResponse#missing missing} entities in
32
+ # `LookupResponse`, this is the version of the snapshot that was used to look
33
+ # up the entity, and it is always set except for eventually consistent reads.
34
34
  # @!attribute [rw] cursor
35
35
  # @return [String]
36
36
  # A cursor that points to the position after the result entity.
@@ -79,12 +79,14 @@ module Google
79
79
  # @return [String]
80
80
  # A starting point for the query results. Query cursors are
81
81
  # returned in query result batches and
82
- # [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
82
+ # [can only be used to continue the same
83
+ # query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
83
84
  # @!attribute [rw] end_cursor
84
85
  # @return [String]
85
86
  # An ending point for the query results. Query cursors are
86
87
  # returned in query result batches and
87
- # [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
88
+ # [can only be used to limit the same
89
+ # query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
88
90
  # @!attribute [rw] offset
89
91
  # @return [Integer]
90
92
  # The number of results to skip. Applies before limit, but after all other
@@ -201,7 +203,8 @@ module Google
201
203
  end
202
204
  end
203
205
 
204
- # A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).
206
+ # A [GQL
207
+ # query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).
205
208
  # @!attribute [rw] query_string
206
209
  # @return [String]
207
210
  # A string of the format described
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Datastore
19
- VERSION = "1.5.1".freeze
19
+ VERSION = "1.5.2".freeze
20
20
  end
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-datastore
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-02-13 00:00:00.000000000 Z
12
+ date: 2019-04-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-cloud-core
@@ -143,14 +143,14 @@ dependencies:
143
143
  requirements:
144
144
  - - "~>"
145
145
  - !ruby/object:Gem::Version
146
- version: 0.61.0
146
+ version: 0.64.0
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - "~>"
152
152
  - !ruby/object:Gem::Version
153
- version: 0.61.0
153
+ version: 0.64.0
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: simplecov
156
156
  requirement: !ruby/object:Gem::Requirement
@@ -264,8 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
264
264
  - !ruby/object:Gem::Version
265
265
  version: '0'
266
266
  requirements: []
267
- rubyforge_project:
268
- rubygems_version: 2.7.6
267
+ rubygems_version: 3.0.3
269
268
  signing_key:
270
269
  specification_version: 4
271
270
  summary: API Client library for Google Cloud Datastore