google-cloud-logging 1.1.0 → 1.2.1

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
  SHA1:
3
- metadata.gz: ce60628d40d567770462e9e345948453b717dc33
4
- data.tar.gz: 9a64aa5f9e7daf8c418186a89d7b38cd281ae78b
3
+ metadata.gz: 2040c01767882892eec9ab8951ae42563a026a48
4
+ data.tar.gz: 5024c4eae693b2e0822d5928da4a305837ffcac7
5
5
  SHA512:
6
- metadata.gz: 5dbf4f38b4eafd181fe939fd1c77fe37a77ca4dd56faaab440aaa5c7161a25554f80df0a0cf2585038eeaceabec0dd7d315b3450b026634099035569673e6526
7
- data.tar.gz: c45e64d63897784f481b6b1e61ff6486d430ed03bf3f25d1e78d48e4b19e5bc03a349f4b19f9075190921c802d9c7d3f01cd422e7ed79359c18a723998247aeb
6
+ metadata.gz: 394d202895b1719f155846ea0b38423aabc9b8c173f39283348a12a3ec69d915a3e6e17d1193dc7dcd7f251f3560f6d78b4338a3be44eb53978319cecaebcada
7
+ data.tar.gz: 8274d6c0f7686057113cb07a5cf5e89cd0302b3861fc3095ee96adacc134fdd9b4b05b810a8ac982ec5389915c162e5be0f6d7de3e813290f72aafe0c9c13812
@@ -12,8 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- require "set"
16
15
 
16
+ require "set"
17
+ require "stackdriver/core/async_actor"
17
18
 
18
19
  module Google
19
20
  module Cloud
@@ -53,12 +54,11 @@ module Google
53
54
  # labels: labels
54
55
  #
55
56
  class AsyncWriter
56
- DEFAULT_MAX_QUEUE_SIZE = 10000
57
- CLEANUP_TIMEOUT = 10.0
58
- WAIT_INTERVAL = 1.0
57
+ include Stackdriver::Core::AsyncActor
59
58
 
60
- @cleanup_list = nil
61
- @exit_lock = Mutex.new
59
+ DEFAULT_MAX_QUEUE_SIZE = 10000
60
+ CLEANUP_TIMEOUT = Stackdriver::Core::AsyncActor::CLEANUP_TIMEOUT
61
+ WAIT_INTERVAL = Stackdriver::Core::AsyncActor::WAIT_INTERVAL
62
62
 
63
63
  ##
64
64
  # @private Item in the log entries queue.
@@ -85,7 +85,9 @@ module Google
85
85
 
86
86
  ##
87
87
  # The current state. Either :running, :suspended, :stopping, or :stopped
88
- attr_reader :state
88
+ #
89
+ # DEPRECATED. Use #async_state instead.
90
+ alias_method :state, :async_state
89
91
 
90
92
  ##
91
93
  # The last exception thrown by the background thread, or nil if nothing
@@ -95,11 +97,13 @@ module Google
95
97
  ##
96
98
  # @private Creates a new AsyncWriter instance.
97
99
  def initialize logging, max_queue_size = DEFAULT_MAX_QUEUE_SIZE
100
+ super()
101
+
98
102
  @logging = logging
99
103
  @max_queue_size = max_queue_size
100
- @startup_lock = Mutex.new
101
- @thread = nil
102
- @state = :running
104
+ @queue_resource = new_cond
105
+ @queue = []
106
+ @queue_size = 0
103
107
  end
104
108
 
105
109
  ##
@@ -145,16 +149,16 @@ module Google
145
149
  def write_entries entries, log_name: nil, resource: nil, labels: nil
146
150
  ensure_thread
147
151
  entries = Array(entries)
148
- @lock.synchronize do
152
+ synchronize do
149
153
  fail "AsyncWriter has been stopped" unless writable?
150
154
  queue_item = QueueItem.new entries, log_name, resource, labels
151
155
  if @queue.empty? || !@queue.last.try_combine(queue_item)
152
156
  @queue.push queue_item
153
157
  end
154
158
  @queue_size += entries.size
155
- @lock_cond.broadcast
159
+ @queue_resource.broadcast
156
160
  while @max_queue_size && @queue_size > @max_queue_size
157
- @lock_cond.wait
161
+ @queue_resource.wait
158
162
  end
159
163
  end
160
164
  self
@@ -202,21 +206,12 @@ module Google
202
206
  # issued writes will complete. Once any existing backlog has been
203
207
  # cleared, the state will change to :stopped.
204
208
  #
209
+ # DEPRECATED. Use #async_stop instead.
210
+ #
205
211
  # @return [Boolean] Returns true if the writer was running, or false
206
212
  # if the writer had already been stopped.
207
213
  #
208
- def stop
209
- ensure_thread
210
- @lock.synchronize do
211
- if state != :stopped
212
- @state = :stopping
213
- @lock_cond.broadcast
214
- true
215
- else
216
- false
217
- end
218
- end
219
- end
214
+ alias_method :stop, :async_stop
220
215
 
221
216
  ##
222
217
  # Suspends this asynchronous writer.
@@ -224,21 +219,12 @@ module Google
224
219
  # After this call succeeds, the state will change to :suspended, and
225
220
  # the writer will stop sending RPCs until resumed.
226
221
  #
222
+ # DEPRECATED. Use #async_suspend instead.
223
+ #
227
224
  # @return [Boolean] Returns true if the writer had been running and was
228
225
  # suspended, otherwise false.
229
226
  #
230
- def suspend
231
- ensure_thread
232
- @lock.synchronize do
233
- if state == :running
234
- @state = :suspended
235
- @lock_cond.broadcast
236
- true
237
- else
238
- false
239
- end
240
- end
241
- end
227
+ alias_method :suspend, :async_suspend
242
228
 
243
229
  ##
244
230
  # Resumes this suspended asynchronous writer.
@@ -246,99 +232,69 @@ module Google
246
232
  # After this call succeeds, the state will change to :running, and
247
233
  # the writer will resume sending RPCs.
248
234
  #
235
+ # DEPRECATED. Use #async_resume instead.
236
+ #
249
237
  # @return [Boolean] Returns true if the writer had been suspended and
250
238
  # is now running, otherwise false.
251
239
  #
252
- def resume
253
- ensure_thread
254
- @lock.synchronize do
255
- if state == :suspended
256
- @state = :running
257
- @lock_cond.broadcast
258
- true
259
- else
260
- false
261
- end
262
- end
263
- end
240
+ alias_method :resume, :async_resume
264
241
 
265
242
  ##
266
243
  # Returns true if this writer is running.
267
244
  #
245
+ # DEPRECATED. Use #async_running? instead.
246
+ #
268
247
  # @return [Boolean] Returns true if the writer is currently running.
269
248
  #
270
- def running?
271
- ensure_thread
272
- @lock.synchronize do
273
- state == :running
274
- end
275
- end
249
+ alias_method :running?, :async_running?
276
250
 
277
251
  ##
278
252
  # Returns true if this writer is suspended.
279
253
  #
254
+ # DEPRECATED. Use #async_suspended? instead.
255
+ #
280
256
  # @return [Boolean] Returns true if the writer is currently suspended.
281
257
  #
282
- def suspended?
283
- ensure_thread
284
- @lock.synchronize do
285
- state == :suspended
286
- end
287
- end
258
+ alias_method :suspended?, :async_suspended?
288
259
 
289
260
  ##
290
261
  # Returns true if this writer is still accepting writes. This means
291
262
  # it is either running or suspended.
292
263
  #
264
+ # DEPRECATED. Use #async_working? instead.
265
+ #
293
266
  # @return [Boolean] Returns true if the writer is accepting writes.
294
267
  #
295
- def writable?
296
- ensure_thread
297
- @lock.synchronize do
298
- state == :suspended || state == :running
299
- end
300
- end
268
+ alias_method :writable?, :async_working?
301
269
 
302
270
  ##
303
271
  # Returns true if this writer is fully stopped.
304
272
  #
273
+ # DEPRECATED. Use #async_stopped? instead.
274
+ #
305
275
  # @return [Boolean] Returns true if the writer is fully stopped.
306
276
  #
307
- def stopped?
308
- ensure_thread
309
- @lock.synchronize do
310
- state == :stopped
311
- end
312
- end
277
+ alias_method :stopped?, :async_stopped?
313
278
 
314
279
  ##
315
280
  # Blocks until this asynchronous writer has been stopped, or the given
316
281
  # timeout (if present) has elapsed.
317
282
  #
283
+ # DEPRECATED. Use #wait_until_async_stopped instead.
284
+ #
318
285
  # @param [Number, nil] timeout Timeout in seconds, or `nil` for no
319
286
  # timeout.
320
287
  #
321
288
  # @return [Boolean] Returns true if the writer is stopped, or false
322
289
  # if the timeout expired.
323
290
  #
324
- def wait_until_stopped timeout = nil
325
- ensure_thread
326
- deadline = timeout ? ::Time.new.to_f + timeout : nil
327
- @lock.synchronize do
328
- until state == :stopped
329
- cur_time = ::Time.new.to_f
330
- return false if deadline && cur_time >= deadline
331
- interval = deadline ? deadline - cur_time : WAIT_INTERVAL
332
- interval = WAIT_INTERVAL if interval > WAIT_INTERVAL
333
- @lock_cond.wait interval
334
- end
335
- end
336
- true
337
- end
291
+ alias_method :wait_until_stopped, :wait_until_async_stopped
338
292
 
339
293
  ##
340
294
  # Stop this asynchronous writer and block until it has been stopped.
341
295
  #
296
+ # DEPRECATED. Use #async_stop! instead.
297
+ #
342
298
  # @param [Number] timeout Timeout in seconds.
343
299
  # @param [Boolean] force If set to true, and the writer hasn't stopped
344
300
  # within the given timeout, kill it forcibly by terminating the
@@ -351,63 +307,41 @@ module Google
351
307
  # after the timeout, or `:forced` if it was forcibly killed.
352
308
  #
353
309
  def stop! timeout, force: false
354
- return :stopped unless stop
355
- return :waited if wait_until_stopped timeout
356
- return :timeout unless force
357
- @thread.kill
358
- @thread.join
359
- :forced
360
- end
310
+ @cleanup_options[:timeout] = timeout unless timeout.nil?
311
+ @cleanup_options[:force] = force unless force.nil?
361
312
 
362
- protected
313
+ async_stop!
314
+ end
363
315
 
364
316
  ##
365
- # @private Ensures the background thread is running. This is called
366
- # at the start of all public methods, and kicks off the thread lazily.
367
- # It also ensures the thread gets restarted (with an empty queue) in
368
- # case this object is forked into a child process.
369
- #
370
- def ensure_thread
371
- @startup_lock.synchronize do
372
- if (@thread.nil? || !@thread.alive?) && @state != :stopped
373
- @queue_size = 0
374
- @queue = []
375
- @lock = Monitor.new
376
- @lock_cond = @lock.new_cond
377
- AsyncWriter.register_for_cleanup self
378
- @thread = Thread.new do
379
- run_backgrounder
380
- AsyncWriter.unregister_for_cleanup self
381
- end
382
- end
317
+ # @private Callback function when the async actor thread state changes
318
+ def on_async_state_change
319
+ synchronize do
320
+ @queue_resource.broadcast
383
321
  end
384
322
  end
385
323
 
324
+ protected
325
+
386
326
  ##
387
327
  # @private The background thread implementation, which continuously
388
328
  # waits for and performs work, and returns only when fully stopped.
389
329
  #
390
330
  def run_backgrounder
391
- loop do
392
- queue_item = wait_next_item
393
- return unless queue_item
394
- begin
395
- logging.write_entries(
396
- queue_item.entries,
397
- log_name: queue_item.log_name,
398
- resource: queue_item.resource,
399
- labels: queue_item.labels
400
- )
401
- rescue => e
402
- # Ignore any exceptions thrown from the background thread, but
403
- # keep running to ensure its state behavior remains consistent.
404
- @last_exception = e
405
- end
331
+ queue_item = wait_next_item
332
+ return unless queue_item
333
+ begin
334
+ logging.write_entries(
335
+ queue_item.entries,
336
+ log_name: queue_item.log_name,
337
+ resource: queue_item.resource,
338
+ labels: queue_item.labels
339
+ )
340
+ rescue => e
341
+ # Ignore any exceptions thrown from the background thread, but
342
+ # keep running to ensure its state behavior remains consistent.
343
+ @last_exception = e
406
344
  end
407
- ensure
408
- # If something drastic happened like the thread was killed, make
409
- # sure the state is consistent.
410
- @state = :stopped
411
345
  end
412
346
 
413
347
  ##
@@ -418,61 +352,28 @@ module Google
418
352
  # queue, returns `nil`.
419
353
  #
420
354
  def wait_next_item
421
- @lock.synchronize do
355
+ synchronize do
422
356
  while state == :suspended ||
423
357
  (state == :running && @queue.empty?)
424
- @lock_cond.wait
358
+ @queue_resource.wait
425
359
  end
426
360
  queue_item = nil
427
- if @queue.empty?
428
- @state = :stopped
429
- else
361
+ unless @queue.empty?
430
362
  queue_item = @queue.shift
431
363
  @queue_size -= queue_item.entries.size
432
364
  end
433
- @lock_cond.broadcast
365
+ @queue_resource.broadcast
434
366
  queue_item
435
367
  end
436
368
  end
437
369
 
438
370
  ##
439
- # Register the given AsyncWriter for cleanup on VM exit.
440
- #
441
- # @private
442
- #
443
- def self.register_for_cleanup async
444
- @exit_lock.synchronize do
445
- unless @cleanup_list
446
- @cleanup_list = ::Set.new
447
- at_exit { AsyncWriter.run_cleanup }
448
- end
449
- @cleanup_list.add async
450
- end
451
- end
452
-
453
- ##
454
- # Unregister the given AsyncWriter for cleanup on VM exit.
455
- #
456
- # @private
457
- #
458
- def self.unregister_for_cleanup async
459
- @exit_lock.synchronize do
460
- @cleanup_list.delete async if @cleanup_list
461
- end
462
- end
463
-
464
- ##
465
- # Exit hook that cleans up any running AsyncWriters.
466
- #
467
- # @private
468
- #
469
- def self.run_cleanup
470
- @exit_lock.synchronize do
471
- if @cleanup_list
472
- @cleanup_list.each do |async|
473
- async.stop! CLEANUP_TIMEOUT, force: true
474
- end
475
- end
371
+ # @private Override the #backgrounder_stoppable? method from AsyncActor
372
+ # module. The actor can be gracefully stopped when queue is
373
+ # empty.
374
+ def backgrounder_stoppable?
375
+ synchronize do
376
+ @queue.empty?
476
377
  end
477
378
  end
478
379
  end
@@ -71,6 +71,12 @@ module Google
71
71
  # The logging severity threshold (e.g. `Logger::INFO`)
72
72
  attr_reader :level
73
73
  alias_method :sev_threshold, :level
74
+ alias_method :local_level, :level
75
+
76
+ ##
77
+ # Boolean flag that indicates whether this logger can be silenced or
78
+ # not.
79
+ attr_accessor :silencer
74
80
 
75
81
  ##
76
82
  # This logger does not use a formatter, but it provides a default
@@ -144,13 +150,14 @@ module Google
144
150
  @writer = writer
145
151
  @log_name = log_name
146
152
  @resource = resource
147
- @labels = labels
153
+ @labels = labels || {}
148
154
  @level = 0 # DEBUG is the default behavior
149
155
  @request_info = {}
150
156
  @closed = false
151
157
  # Unused, but present for API compatibility
152
158
  @formatter = ::Logger::Formatter.new
153
159
  @datetime_format = ""
160
+ @silencer = true
154
161
 
155
162
  # The writer is usually a Project or AsyncWriter.
156
163
  logging = @writer.respond_to?(:logging) ? @writer.logging : @writer
@@ -169,9 +176,9 @@ module Google
169
176
  #
170
177
  def debug message = nil, &block
171
178
  if block_given?
172
- add 0, nil, message, &block
179
+ add ::Logger::DEBUG, nil, message, &block
173
180
  else
174
- add 0, message, nil, &block
181
+ add ::Logger::DEBUG, message
175
182
  end
176
183
  end
177
184
 
@@ -187,9 +194,9 @@ module Google
187
194
  #
188
195
  def info message = nil, &block
189
196
  if block_given?
190
- add 1, nil, message, &block
197
+ add ::Logger::INFO, nil, message, &block
191
198
  else
192
- add 1, message, nil, &block
199
+ add ::Logger::INFO, message
193
200
  end
194
201
  end
195
202
 
@@ -205,9 +212,9 @@ module Google
205
212
  #
206
213
  def warn message = nil, &block
207
214
  if block_given?
208
- add 2, nil, message, &block
215
+ add ::Logger::WARN, nil, message, &block
209
216
  else
210
- add 2, message, nil, &block
217
+ add ::Logger::WARN, message
211
218
  end
212
219
  end
213
220
 
@@ -223,9 +230,9 @@ module Google
223
230
  #
224
231
  def error message = nil, &block
225
232
  if block_given?
226
- add 3, nil, message, &block
233
+ add ::Logger::ERROR, nil, message, &block
227
234
  else
228
- add 3, message, nil, &block
235
+ add ::Logger::ERROR, message
229
236
  end
230
237
  end
231
238
 
@@ -241,9 +248,9 @@ module Google
241
248
  #
242
249
  def fatal message = nil, &block
243
250
  if block_given?
244
- add 4, nil, message, &block
251
+ add ::Logger::FATAL, nil, message, &block
245
252
  else
246
- add 4, message, nil, &block
253
+ add ::Logger::FATAL, message
247
254
  end
248
255
  end
249
256
 
@@ -260,9 +267,9 @@ module Google
260
267
  #
261
268
  def unknown message = nil, &block
262
269
  if block_given?
263
- add 5, nil, message, &block
270
+ add ::Logger::UNKNOWN, nil, message, &block
264
271
  else
265
- add 5, message, nil, &block
272
+ add ::Logger::UNKNOWN, message
266
273
  end
267
274
  end
268
275
 
@@ -281,7 +288,7 @@ module Google
281
288
  # called when the logger is configured to show them.
282
289
  #
283
290
  def add severity, message = nil, progname = nil
284
- severity = derive_severity(severity) || 5 # 5 is UNKNOWN/DEFAULT
291
+ severity = derive_severity(severity) || ::Logger::UNKNOWN
285
292
  return true if severity < @level
286
293
 
287
294
  if message.nil?
@@ -312,35 +319,42 @@ module Google
312
319
  # Returns `true` if the current severity level allows for sending
313
320
  # `DEBUG` messages.
314
321
  def debug?
315
- @level <= 0
322
+ @level <= ::Logger::DEBUG
316
323
  end
317
324
 
318
325
  ##
319
326
  # Returns `true` if the current severity level allows for sending `INFO`
320
327
  # messages.
321
328
  def info?
322
- @level <= 1
329
+ @level <= ::Logger::INFO
323
330
  end
324
331
 
325
332
  ##
326
333
  # Returns `true` if the current severity level allows for sending `WARN`
327
334
  # messages.
328
335
  def warn?
329
- @level <= 2
336
+ @level <= ::Logger::WARN
330
337
  end
331
338
 
332
339
  ##
333
340
  # Returns `true` if the current severity level allows for sending
334
341
  # `ERROR` messages.
335
342
  def error?
336
- @level <= 3
343
+ @level <= ::Logger::ERROR
337
344
  end
338
345
 
339
346
  ##
340
347
  # Returns `true` if the current severity level allows for sending
341
348
  # `FATAL` messages.
342
349
  def fatal?
343
- @level <= 4
350
+ @level <= ::Logger::FATAL
351
+ end
352
+
353
+ ##
354
+ # Returns `true` if the current severity level allows for sending
355
+ # `UNKNOWN` messages.
356
+ def unknown?
357
+ @level <= ::Logger::UNKNOWN
344
358
  end
345
359
 
346
360
  ##
@@ -369,6 +383,7 @@ module Google
369
383
  @level = new_level
370
384
  end
371
385
  alias_method :sev_threshold=, :level=
386
+ alias_method :local_level=, :level=
372
387
 
373
388
  ##
374
389
  # Close the logging "device". This effectively disables logging from
@@ -452,6 +467,50 @@ module Google
452
467
  # @deprecated Use delete_request_info
453
468
  alias_method :delete_trace_id, :delete_request_info
454
469
 
470
+ ##
471
+ # No-op method. Created to match the spec of ActiveSupport::Logger#flush
472
+ # method when used in Rails application.
473
+ def flush
474
+ self
475
+ end
476
+
477
+ ##
478
+ # Filter out low severity messages within block.
479
+ #
480
+ # @param [Integer] temp_level Severity threshold to filter within the
481
+ # block. Messages with lower severity will be blocked. Default
482
+ # ::Logger::ERROR
483
+ #
484
+ # @example
485
+ # require "google/cloud/logging"
486
+ #
487
+ # logging = Google::Cloud::Logging.new
488
+ #
489
+ # resource = logging.resource "gae_app",
490
+ # module_id: "1",
491
+ # version_id: "20150925t173233"
492
+ #
493
+ # logger = logging.logger "my_app_log", resource, env: :production
494
+ #
495
+ # logger.silence do
496
+ # logger.info "Info message" # No log entry written
497
+ # logger.error "Error message" # Log entry written
498
+ # end
499
+ def silence temp_level = ::Logger::ERROR
500
+ if silencer
501
+ begin
502
+ old_level = level
503
+ self.level = temp_level
504
+
505
+ yield self
506
+ ensure
507
+ self.level = old_level
508
+ end
509
+ else
510
+ yield self
511
+ end
512
+ end
513
+
455
514
  protected
456
515
 
457
516
  ##
@@ -490,7 +549,7 @@ module Google
490
549
  end
491
550
  end
492
551
 
493
- labels.nil? ? merged_labels : labels.merge(merged_labels)
552
+ labels.merge(merged_labels)
494
553
  end
495
554
 
496
555
  ##
@@ -500,12 +559,12 @@ module Google
500
559
 
501
560
  downcase_severity = severity.to_s.downcase
502
561
  case downcase_severity
503
- when "debug".freeze then 0
504
- when "info".freeze then 1
505
- when "warn".freeze then 2
506
- when "error".freeze then 3
507
- when "fatal".freeze then 4
508
- when "unknown".freeze then 5
562
+ when "debug".freeze then ::Logger::DEBUG
563
+ when "info".freeze then ::Logger::INFO
564
+ when "warn".freeze then ::Logger::WARN
565
+ when "error".freeze then ::Logger::ERROR
566
+ when "fatal".freeze then ::Logger::FATAL
567
+ when "unknown".freeze then ::Logger::UNKNOWN
509
568
  else nil
510
569
  end
511
570
  end
@@ -6,9 +6,7 @@
6
6
  "DEADLINE_EXCEEDED",
7
7
  "UNAVAILABLE"
8
8
  ],
9
- "non_idempotent": [
10
- "UNAVAILABLE"
11
- ]
9
+ "non_idempotent": []
12
10
  },
13
11
  "retry_params": {
14
12
  "default": {
@@ -6,9 +6,7 @@
6
6
  "DEADLINE_EXCEEDED",
7
7
  "UNAVAILABLE"
8
8
  ],
9
- "non_idempotent": [
10
- "UNAVAILABLE"
11
- ]
9
+ "non_idempotent": []
12
10
  },
13
11
  "retry_params": {
14
12
  "default": {
@@ -6,9 +6,7 @@
6
6
  "DEADLINE_EXCEEDED",
7
7
  "UNAVAILABLE"
8
8
  ],
9
- "non_idempotent": [
10
- "UNAVAILABLE"
11
- ]
9
+ "non_idempotent": []
12
10
  },
13
11
  "retry_params": {
14
12
  "default": {
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Logging
19
- VERSION = "1.1.0"
19
+ VERSION = "1.2.1"
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-logging
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
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: 2017-05-26 00:00:00.000000000 Z
12
+ date: 2017-07-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-cloud-core
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '1.1'
34
+ version: '1.2'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '1.1'
41
+ version: '1.2'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: google-gax
44
44
  requirement: !ruby/object:Gem::Requirement