google-cloud-debugger 0.31.0 → 0.32.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 192b49269ab919dffd129a0ec48af66cdab93f4c83cf4e502e14dfedeceaab80
|
4
|
+
data.tar.gz: 0c88a6443ae79182cee72c5cff5c6fc2fc0641fe1424ec30fba0d498c653f508
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 876816208a7431ec0201a85cdf5ff1c861a2b7fa7f2beb64be8ae96224b00ddcdcbb9de1b92d0c47970b0f0ac83c82edbfec3c93edb8344d1b9667340b7d6791
|
7
|
+
data.tar.gz: aae912a8b8d3d6a6133a3731bf0c5aa6c8c3b4d82a2c7c8840f76d779477d9365fbad56f5bec27a15adb455ca33c6b49f56a0aec4ebd5169e79fb102c7a5cafb
|
data/README.md
CHANGED
@@ -226,6 +226,13 @@ for a list of possible configuration options.
|
|
226
226
|
|
227
227
|
This library is supported on Ruby 2.2 or later.
|
228
228
|
|
229
|
+
However, Ruby 2.3 or later is strongly recommended, as earlier releases have
|
230
|
+
reached or are nearing end-of-life. After June 1, 2018, Google will provide
|
231
|
+
official support only for Ruby versions that are considered current and
|
232
|
+
supported by Ruby Core (that is, Ruby versions that are either in normal
|
233
|
+
maintenance or in security maintenance).
|
234
|
+
See https://www.ruby-lang.org/en/downloads/branches/ for further details.
|
235
|
+
|
229
236
|
This library follows [Semantic Versioning](http://semver.org/). It is currently
|
230
237
|
in major version zero (0.y.z), which means that anything may change at any time
|
231
238
|
and the public API should not be considered stable.
|
@@ -13,6 +13,8 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
|
16
|
+
require "set"
|
17
|
+
|
16
18
|
require "google/cloud/logging/logger"
|
17
19
|
require "google/cloud/debugger/request_quota_manager"
|
18
20
|
|
@@ -23,8 +25,71 @@ module Google
|
|
23
25
|
# Rack Middleware implementation that supports Stackdriver Debugger Agent
|
24
26
|
# in Rack-based Ruby frameworks. It instantiates a new debugger agent if
|
25
27
|
# one isn't given already. It helps optimize Debugger Agent Tracer
|
26
|
-
# performance by
|
28
|
+
# performance by suspending and resuming the tracer between each request.
|
29
|
+
#
|
30
|
+
# To use this middleware, simply install it in your Rack configuration.
|
31
|
+
# The middleware will take care of registering itself with the
|
32
|
+
# Stackdriver Debugger and activating the debugger agent. The location
|
33
|
+
# of the middleware in the middleware stack matters: breakpoints will be
|
34
|
+
# detected in middleware appearing after but not before this middleware.
|
35
|
+
#
|
36
|
+
# For best results, you should also call {Middleware.start_agents}
|
37
|
+
# during application initialization. See its documentation for details.
|
38
|
+
#
|
27
39
|
class Middleware
|
40
|
+
##
|
41
|
+
# Reset deferred start mechanism.
|
42
|
+
# @private
|
43
|
+
#
|
44
|
+
def self.reset_deferred_start
|
45
|
+
@debuggers_to_start = Set.new
|
46
|
+
end
|
47
|
+
|
48
|
+
reset_deferred_start
|
49
|
+
|
50
|
+
##
|
51
|
+
# Start the debugger. Either adds it to the deferred list, or, if the
|
52
|
+
# deferred list has already been started, starts immediately.
|
53
|
+
#
|
54
|
+
# @param [Google::Cloud::Debugger::Project] debugger
|
55
|
+
#
|
56
|
+
# @private
|
57
|
+
#
|
58
|
+
def self.deferred_start debugger
|
59
|
+
if @debuggers_to_start
|
60
|
+
@debuggers_to_start << debugger
|
61
|
+
else
|
62
|
+
debugger.start
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
##
|
67
|
+
# This should be called once the application determines that it is safe
|
68
|
+
# to start background threads and open gRPC connections. It informs
|
69
|
+
# the middleware system that it can start debugger agents.
|
70
|
+
#
|
71
|
+
# Generally, this matters if the application forks worker processes;
|
72
|
+
# this method should be called only after workers are forked, since
|
73
|
+
# threads and network connections interact badly with fork. For
|
74
|
+
# example, when running Puma in
|
75
|
+
# [clustered mode](https://github.com/puma/puma#clustered-mode), this
|
76
|
+
# method should be called in an `on_worker_boot` block.
|
77
|
+
#
|
78
|
+
# If the application does no forking, this method can be called any
|
79
|
+
# time early in the application initialization process.
|
80
|
+
#
|
81
|
+
# If {Middleware.start_agents} is never called, the debugger agent will
|
82
|
+
# be started when the first request is received. This should be safe,
|
83
|
+
# but it will probably mean breakpoints will not be recognized during
|
84
|
+
# that first request. For best results, an application should call this
|
85
|
+
# method at the appropriate time.
|
86
|
+
#
|
87
|
+
def self.start_agents
|
88
|
+
return unless @debuggers_to_start
|
89
|
+
@debuggers_to_start.each(&:start)
|
90
|
+
@debuggers_to_start = nil
|
91
|
+
end
|
92
|
+
|
28
93
|
##
|
29
94
|
# Create a new Debugger Middleware.
|
30
95
|
#
|
@@ -58,8 +123,7 @@ module Google
|
|
58
123
|
Google::Cloud::Debugger::RequestQuotaManager.new
|
59
124
|
end
|
60
125
|
|
61
|
-
|
62
|
-
@debugger.start
|
126
|
+
Middleware.deferred_start(@debugger)
|
63
127
|
end
|
64
128
|
|
65
129
|
##
|
@@ -73,6 +137,9 @@ module Google
|
|
73
137
|
# @return [Rack::Response] The response from downstream Rack app
|
74
138
|
#
|
75
139
|
def call env
|
140
|
+
# Ensure the agent is running. (Note the start method is idempotent.)
|
141
|
+
@debugger.start
|
142
|
+
|
76
143
|
# Enable/resume breakpoints tracing
|
77
144
|
@debugger.agent.tracer.start
|
78
145
|
|
@@ -37,6 +37,15 @@ module Google
|
|
37
37
|
# on how to configure the Railtie and Middleware.
|
38
38
|
#
|
39
39
|
class Railtie < ::Rails::Railtie
|
40
|
+
##
|
41
|
+
# Inform the Railtie that it is safe to start debugger agents.
|
42
|
+
# This simply calls {Google::Cloud::Debugger::Middleware.start_agents}.
|
43
|
+
# See its documentation for more information.
|
44
|
+
#
|
45
|
+
def self.start_agents
|
46
|
+
Google::Cloud::Debugger::Middleware.start_agents
|
47
|
+
end
|
48
|
+
|
40
49
|
config.google_cloud = ::ActiveSupport::OrderedOptions.new unless
|
41
50
|
config.respond_to? :google_cloud
|
42
51
|
config.google_cloud[:debugger] = ::ActiveSupport::OrderedOptions.new
|
@@ -87,7 +96,7 @@ module Google
|
|
87
96
|
|
88
97
|
# Otherwise set use_debugger to true if Rails is running in
|
89
98
|
# the production environment
|
90
|
-
Google::Cloud.configure.use_debugger ||= Rails.env.production?
|
99
|
+
Google::Cloud.configure.use_debugger ||= ::Rails.env.production?
|
91
100
|
end
|
92
101
|
|
93
102
|
# rubocop:disable all
|
@@ -17,7 +17,7 @@ module Google
|
|
17
17
|
# rubocop:disable LineLength
|
18
18
|
|
19
19
|
##
|
20
|
-
# # Ruby Client for Stackdriver Debugger API ([
|
20
|
+
# # Ruby Client for Stackdriver Debugger API ([Beta](https://github.com/GoogleCloudPlatform/google-cloud-ruby#versioning))
|
21
21
|
#
|
22
22
|
# [Stackdriver Debugger API][Product Documentation]:
|
23
23
|
# Examines the call stack and variables of a running application
|
@@ -51,4 +51,4 @@ module Google
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
|
-
end
|
54
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-debugger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.32.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Heng Xiong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: binding_of_caller
|
@@ -328,7 +328,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
328
328
|
version: '0'
|
329
329
|
requirements: []
|
330
330
|
rubyforge_project:
|
331
|
-
rubygems_version: 2.7.
|
331
|
+
rubygems_version: 2.7.7
|
332
332
|
signing_key:
|
333
333
|
specification_version: 4
|
334
334
|
summary: API Client and instrumentation library for Stackdriver Debugger
|