google-cloud-error_reporting 0.29.0 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +45 -45
- data/lib/google-cloud-error_reporting.rb +51 -1
- data/lib/google/cloud/error_reporting.rb +53 -26
- data/lib/google/cloud/error_reporting/async_error_reporter.rb +1 -1
- data/lib/google/cloud/error_reporting/credentials.rb +6 -6
- data/lib/google/cloud/error_reporting/middleware.rb +18 -14
- data/lib/google/cloud/error_reporting/project.rb +14 -14
- data/lib/google/cloud/error_reporting/rails.rb +16 -6
- data/lib/google/cloud/error_reporting/service.rb +1 -1
- data/lib/google/cloud/error_reporting/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 84b5253d164ae3db6ddc1be54bfa7b9c9ce343a2324137c0c1ab08b3cdc4c66f
|
|
4
|
+
data.tar.gz: 64bd74a706fd71fc3f54ceacda2a6c5742f035f41d42c873121d8b8f9a23a90b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 62a140a092f7b33d38c46ffe1d303b06aa12b3ad6fe2eb7781568d9a11111aba123fda5c481bdc1ae2c2a82692e086b56d1042518b99a05f9830d32e6da678df
|
|
7
|
+
data.tar.gz: a3d8cdfc89c1eeb7758da6fa59201dfec377b9a513570eebed212b3f9c088bcb11b3c81fee2481b522e33544faed4c971eade4e9cec276bbea226d704a7f6aee
|
data/README.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
[Stackdriver Error Reporting](https://cloud.google.com/error-reporting/) counts,
|
|
4
4
|
analyzes and aggregates errors raised in your running cloud services. A
|
|
5
|
-
centralized error management interface displays the results with sorting
|
|
6
|
-
and filtering capabilities. A dedicated view shows the error details: time
|
|
7
|
-
chart, occurrences, affected user count, first and last seen dates and a
|
|
8
|
-
cleaned exception stack trace. Opt-in to receive email and mobile alerts on
|
|
5
|
+
centralized error management interface displays the results with sorting
|
|
6
|
+
and filtering capabilities. A dedicated view shows the error details: time
|
|
7
|
+
chart, occurrences, affected user count, first and last seen dates and a
|
|
8
|
+
cleaned exception stack trace. Opt-in to receive email and mobile alerts on
|
|
9
9
|
new errors.
|
|
10
10
|
|
|
11
11
|
- [google-cloud-error_reporting API documentation](http://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-error_reporting/latest)
|
|
@@ -35,26 +35,26 @@ gem "google-cloud-error_reporting"
|
|
|
35
35
|
$ bundle install
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
Alternatively, check out the [`stackdriver`](../stackdriver) gem that includes
|
|
38
|
+
Alternatively, check out the [`stackdriver`](../stackdriver) gem that includes
|
|
39
39
|
the `google-cloud-error_reporting` gem.
|
|
40
40
|
|
|
41
41
|
## Enable Stackdriver Error Reporting API
|
|
42
42
|
|
|
43
43
|
The Stackdriver Error Reporting library needs the [Stackdriver Error
|
|
44
|
-
Reporting API](https://console.cloud.google.com/apis/library/clouderrorreporting.googleapis.com)
|
|
45
|
-
to be enabled on your Google Cloud project. Make sure it's enabled if not
|
|
44
|
+
Reporting API](https://console.cloud.google.com/apis/library/clouderrorreporting.googleapis.com)
|
|
45
|
+
to be enabled on your Google Cloud project. Make sure it's enabled if not
|
|
46
46
|
already.
|
|
47
47
|
|
|
48
48
|
## Reporting errors in Rack-based frameworks
|
|
49
49
|
|
|
50
|
-
The Stackdriver Error Reporting library for Ruby makes it easy to integrate
|
|
51
|
-
Stackdriver Error Reporting into popular Rack-based Ruby web frameworks such as
|
|
52
|
-
Ruby on Rails and Sinatra. When the library integration is enabled, it
|
|
50
|
+
The Stackdriver Error Reporting library for Ruby makes it easy to integrate
|
|
51
|
+
Stackdriver Error Reporting into popular Rack-based Ruby web frameworks such as
|
|
52
|
+
Ruby on Rails and Sinatra. When the library integration is enabled, it
|
|
53
53
|
automatically reports exceptions captured from the application's Rack stack.
|
|
54
54
|
|
|
55
55
|
### With Ruby on Rails
|
|
56
56
|
|
|
57
|
-
You can load the Railtie that comes with the library into your Ruby
|
|
57
|
+
You can load the Railtie that comes with the library into your Ruby
|
|
58
58
|
on Rails application by explicitly requiring it during the application startup:
|
|
59
59
|
|
|
60
60
|
```ruby
|
|
@@ -62,12 +62,12 @@ on Rails application by explicitly requiring it during the application startup:
|
|
|
62
62
|
require "google/cloud/error_reporting/rails"
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
If you're using the `stackdriver` gem, it automatically loads the Railtie into
|
|
65
|
+
If you're using the `stackdriver` gem, it automatically loads the Railtie into
|
|
66
66
|
your application when it starts.
|
|
67
67
|
|
|
68
68
|
### With other Rack-based frameworks
|
|
69
69
|
|
|
70
|
-
Other Rack-based frameworks, such as Sinatra, can use the Rack Middleware
|
|
70
|
+
Other Rack-based frameworks, such as Sinatra, can use the Rack Middleware
|
|
71
71
|
provided by the library:
|
|
72
72
|
|
|
73
73
|
```ruby
|
|
@@ -90,58 +90,58 @@ end
|
|
|
90
90
|
|
|
91
91
|
## Configuring the library
|
|
92
92
|
|
|
93
|
-
You can customize the behavior of the Stackdriver Error Reporting library for
|
|
94
|
-
Ruby. See the [configuration guide](../stackdriver/docs/configuration.md) for a list
|
|
93
|
+
You can customize the behavior of the Stackdriver Error Reporting library for
|
|
94
|
+
Ruby. See the [configuration guide](../stackdriver/docs/configuration.md) for a list
|
|
95
95
|
of possible configuration options.
|
|
96
96
|
|
|
97
97
|
## Running on Google Cloud Platform
|
|
98
98
|
|
|
99
|
-
The Stackdriver Error Reporting library for Ruby should work without you
|
|
100
|
-
manually providing authentication credentials for instances running on Google
|
|
101
|
-
Cloud Platform, as long as the Stackdriver Error Reporting API access scope is
|
|
99
|
+
The Stackdriver Error Reporting library for Ruby should work without you
|
|
100
|
+
manually providing authentication credentials for instances running on Google
|
|
101
|
+
Cloud Platform, as long as the Stackdriver Error Reporting API access scope is
|
|
102
102
|
enabled on that instance.
|
|
103
103
|
|
|
104
104
|
### App Engine
|
|
105
105
|
|
|
106
|
-
On Google App Engine, the Stackdriver Error Reporting API access scope is
|
|
107
|
-
enabled by default, and the Stackdriver Error Reporting library for Ruby can
|
|
106
|
+
On Google App Engine, the Stackdriver Error Reporting API access scope is
|
|
107
|
+
enabled by default, and the Stackdriver Error Reporting library for Ruby can
|
|
108
108
|
be used without providing credentials or a project ID.
|
|
109
109
|
|
|
110
110
|
### Container Engine
|
|
111
111
|
|
|
112
|
-
On Google Container Engine, you must explicitly add the `cloud-platform` OAuth
|
|
112
|
+
On Google Container Engine, you must explicitly add the `cloud-platform` OAuth
|
|
113
113
|
scope when creating the cluster:
|
|
114
114
|
|
|
115
115
|
```sh
|
|
116
116
|
$ gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
You may also do this through the Google Cloud Platform Console. Select
|
|
119
|
+
You may also do this through the Google Cloud Platform Console. Select
|
|
120
120
|
**Enabled** in the **Cloud Platform** section of **Create a container cluster**.
|
|
121
121
|
|
|
122
122
|
### Compute Engine
|
|
123
123
|
|
|
124
|
-
For Google Compute Engine instances, you must explicitly enable the
|
|
125
|
-
`cloud-platform` access scope for each instance. When you create a new instance
|
|
126
|
-
through the Google Cloud Platform Console, you can do this under Identity and
|
|
127
|
-
API access: Use the Compute Engine default service account and select "Allow
|
|
124
|
+
For Google Compute Engine instances, you must explicitly enable the
|
|
125
|
+
`cloud-platform` access scope for each instance. When you create a new instance
|
|
126
|
+
through the Google Cloud Platform Console, you can do this under Identity and
|
|
127
|
+
API access: Use the Compute Engine default service account and select "Allow
|
|
128
128
|
full access to all Cloud APIs" under Access scopes.
|
|
129
129
|
|
|
130
130
|
## Running locally and elsewhere
|
|
131
131
|
|
|
132
|
-
To run the Stackdriver Error Reporting outside of Google Cloud Platform, you
|
|
133
|
-
must supply your GCP project ID and appropriate service account credentials
|
|
134
|
-
directly to the Stackdriver Error Reporting. This applies to running the
|
|
135
|
-
library on your own workstation, on your datacenter's computers, or on the VM
|
|
136
|
-
instances of another cloud provider. See the [Authentication
|
|
132
|
+
To run the Stackdriver Error Reporting outside of Google Cloud Platform, you
|
|
133
|
+
must supply your GCP project ID and appropriate service account credentials
|
|
134
|
+
directly to the Stackdriver Error Reporting. This applies to running the
|
|
135
|
+
library on your own workstation, on your datacenter's computers, or on the VM
|
|
136
|
+
instances of another cloud provider. See the [Authentication
|
|
137
137
|
section](#authentication) for instructions on how to do so.
|
|
138
138
|
|
|
139
139
|
## Authentication
|
|
140
140
|
|
|
141
|
-
The Instrumentation client and API use Service Account credentials to connect
|
|
142
|
-
to Google Cloud services. When running on Google Cloud Platform environments,
|
|
143
|
-
the credentials will be discovered automatically. When running on other
|
|
144
|
-
environments the Service Account credentials can be specified by providing in
|
|
141
|
+
The Instrumentation client and API use Service Account credentials to connect
|
|
142
|
+
to Google Cloud services. When running on Google Cloud Platform environments,
|
|
143
|
+
the credentials will be discovered automatically. When running on other
|
|
144
|
+
environments the Service Account credentials can be specified by providing in
|
|
145
145
|
several ways.
|
|
146
146
|
|
|
147
147
|
The best way to provide authentication information if you're using Ruby on Rails
|
|
@@ -161,7 +161,7 @@ end
|
|
|
161
161
|
|
|
162
162
|
Other Rack-based applications that are loading the Rack Middleware directly or
|
|
163
163
|
using the manually reporting interface can leverage the configration interface:
|
|
164
|
-
|
|
164
|
+
|
|
165
165
|
```ruby
|
|
166
166
|
require "google/cloud/error_reporting"
|
|
167
167
|
Google::Cloud.configure do |config|
|
|
@@ -174,8 +174,8 @@ Google::Cloud.configure do |config|
|
|
|
174
174
|
end
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
This library also supports the other authentication methods provided by the
|
|
178
|
-
`google-cloud-ruby` suite. Instructions and configuration options are covered
|
|
177
|
+
This library also supports the other authentication methods provided by the
|
|
178
|
+
`google-cloud-ruby` suite. Instructions and configuration options are covered
|
|
179
179
|
in the [Authentication Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-debugger/guides/authentication).
|
|
180
180
|
|
|
181
181
|
## Supported Ruby Versions
|
|
@@ -186,19 +186,19 @@ This library is supported on Ruby 2.0+.
|
|
|
186
186
|
|
|
187
187
|
This library follows [Semantic Versioning](http://semver.org/).
|
|
188
188
|
|
|
189
|
-
It is currently in major version zero (0.y.z), which means that anything may
|
|
189
|
+
It is currently in major version zero (0.y.z), which means that anything may
|
|
190
190
|
change at any time and the public API should not be considered stable.
|
|
191
191
|
|
|
192
192
|
## Contributing
|
|
193
193
|
|
|
194
194
|
Contributions to this library are always welcome and highly encouraged.
|
|
195
195
|
|
|
196
|
-
See the
|
|
197
|
-
[Contributing Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/contributing)
|
|
196
|
+
See the
|
|
197
|
+
[Contributing Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/contributing)
|
|
198
198
|
for more information on how to get started.
|
|
199
199
|
|
|
200
200
|
Please note that this project is released with a Contributor Code of Conduct. By
|
|
201
|
-
participating in this project you agree to abide by its terms. See
|
|
201
|
+
participating in this project you agree to abide by its terms. See
|
|
202
202
|
[Code of Conduct](../CODE_OF_CONDUCT.md) for more information.
|
|
203
203
|
|
|
204
204
|
## License
|
|
@@ -208,9 +208,9 @@ This library is licensed under Apache 2.0. Full license text is available in
|
|
|
208
208
|
|
|
209
209
|
## Support
|
|
210
210
|
|
|
211
|
-
Please
|
|
211
|
+
Please
|
|
212
212
|
[report bugs at the project on Github](https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues).
|
|
213
|
-
Don't hesitate to
|
|
214
|
-
[ask questions](http://stackoverflow.com/questions/tagged/google-cloud-platform+ruby)
|
|
213
|
+
Don't hesitate to
|
|
214
|
+
[ask questions](http://stackoverflow.com/questions/tagged/google-cloud-platform+ruby)
|
|
215
215
|
about the client or APIs on [StackOverflow](http://stackoverflow.com).
|
|
216
216
|
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
|
|
19
19
|
gem "google-cloud-core"
|
|
20
20
|
require "google/cloud"
|
|
21
|
+
require "google/cloud/config"
|
|
22
|
+
require "googleauth"
|
|
21
23
|
|
|
22
24
|
module Google
|
|
23
25
|
module Cloud
|
|
@@ -36,6 +38,7 @@ module Google
|
|
|
36
38
|
# The default scope is:
|
|
37
39
|
#
|
|
38
40
|
# * `https://www.googleapis.com/auth/cloud-platform`
|
|
41
|
+
#
|
|
39
42
|
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
|
40
43
|
# @param [Hash] client_config A hash of values to override the default
|
|
41
44
|
# behavior of the API client. Optional.
|
|
@@ -62,7 +65,6 @@ module Google
|
|
|
62
65
|
client_config: client_config
|
|
63
66
|
end
|
|
64
67
|
|
|
65
|
-
|
|
66
68
|
##
|
|
67
69
|
# Create a new object for connecting to the Stackdriver Error Reporting
|
|
68
70
|
# service. Each call creates a new connection.
|
|
@@ -84,6 +86,7 @@ module Google
|
|
|
84
86
|
# The default scope is:
|
|
85
87
|
#
|
|
86
88
|
# * `https://www.googleapis.com/auth/cloud-platform`
|
|
89
|
+
#
|
|
87
90
|
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
|
88
91
|
# @param [Hash] client_config A hash of values to override the default
|
|
89
92
|
# behavior of the API client. Optional.
|
|
@@ -113,3 +116,50 @@ module Google
|
|
|
113
116
|
end
|
|
114
117
|
end
|
|
115
118
|
end
|
|
119
|
+
|
|
120
|
+
# Add error reporting to top-level configuration
|
|
121
|
+
Google::Cloud.configure do |config|
|
|
122
|
+
unless config.field? :use_error_reporting
|
|
123
|
+
config.add_field! :use_error_reporting, nil, enum: [true, false]
|
|
124
|
+
end
|
|
125
|
+
unless config.field? :service_name
|
|
126
|
+
config.add_field! :service_name, nil, match: String
|
|
127
|
+
end
|
|
128
|
+
unless config.field? :service_version
|
|
129
|
+
config.add_field! :service_version, nil, match: String
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Set the default error reporting configuration
|
|
134
|
+
Google::Cloud.configure.add_config! :error_reporting do |config|
|
|
135
|
+
default_project = Google::Cloud::Config.deferred do
|
|
136
|
+
ENV["ERROR_REPORTING_PROJECT"]
|
|
137
|
+
end
|
|
138
|
+
default_creds = Google::Cloud::Config.deferred do
|
|
139
|
+
Google::Cloud::Config.credentials_from_env(
|
|
140
|
+
"ERROR_REPORTING_CREDENTIALS", "ERROR_REPORTING_CREDENTIALS_JSON",
|
|
141
|
+
"ERROR_REPORTING_KEYFILE", "ERROR_REPORTING_KEYFILE_JSON"
|
|
142
|
+
)
|
|
143
|
+
end
|
|
144
|
+
default_service = Google::Cloud::Config.deferred do
|
|
145
|
+
ENV["ERROR_REPORTING_SERVICE"]
|
|
146
|
+
end
|
|
147
|
+
default_version = Google::Cloud::Config.deferred do
|
|
148
|
+
ENV["ERROR_REPORTING_VERSION"]
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
config.add_field! :project_id, default_project, match: String, allow_nil: true
|
|
152
|
+
config.add_alias! :project, :project_id
|
|
153
|
+
config.add_field! :credentials, default_creds,
|
|
154
|
+
match: [String, Hash, Google::Auth::Credentials],
|
|
155
|
+
allow_nil: true
|
|
156
|
+
config.add_alias! :keyfile, :credentials
|
|
157
|
+
config.add_field! :scope, nil, match: [String, Array]
|
|
158
|
+
config.add_field! :timeout, nil, match: Integer
|
|
159
|
+
config.add_field! :client_config, nil, match: Hash
|
|
160
|
+
config.add_field! :service_name, default_service,
|
|
161
|
+
match: String, allow_nil: true
|
|
162
|
+
config.add_field! :service_version, default_version,
|
|
163
|
+
match: String, allow_nil: true
|
|
164
|
+
config.add_field! :ignore_classes, nil, match: Array
|
|
165
|
+
end
|
|
@@ -17,6 +17,8 @@ require "google-cloud-error_reporting"
|
|
|
17
17
|
require "google/cloud/error_reporting/async_error_reporter"
|
|
18
18
|
require "google/cloud/error_reporting/project"
|
|
19
19
|
require "google/cloud/error_reporting/middleware"
|
|
20
|
+
require "google/cloud/config"
|
|
21
|
+
require "google/cloud/env"
|
|
20
22
|
require "stackdriver/core"
|
|
21
23
|
|
|
22
24
|
module Google
|
|
@@ -34,12 +36,13 @@ module Google
|
|
|
34
36
|
# [Stackdriver Error Reporting
|
|
35
37
|
# Documentation](https://cloud.google.com/error-reporting/docs/).
|
|
36
38
|
#
|
|
37
|
-
# The goal of google-cloud
|
|
38
|
-
# Rubyists.
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
# options for connecting in the
|
|
39
|
+
# The goal of google-cloud is to provide an API that is comfortable to
|
|
40
|
+
# Rubyists. Your authentication credentials are detected automatically in
|
|
41
|
+
# Google Cloud Platform environments such as Google Compute Engine, Google
|
|
42
|
+
# App Engine and Google Kubernetes Engine. In other environments you can
|
|
43
|
+
# configure authentication easily, either directly in your code or via
|
|
44
|
+
# environment variables. Read more about the options for connecting in the
|
|
45
|
+
# [Authentication
|
|
43
46
|
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
|
|
44
47
|
#
|
|
45
48
|
# ## How to report errors
|
|
@@ -72,12 +75,6 @@ module Google
|
|
|
72
75
|
# for more examples.
|
|
73
76
|
#
|
|
74
77
|
module ErrorReporting
|
|
75
|
-
# Initialize :error_reporting as a nested Configuration under
|
|
76
|
-
# Google::Cloud if haven't already
|
|
77
|
-
unless Google::Cloud.configure.option? :error_reporting
|
|
78
|
-
Google::Cloud.configure.add_options :error_reporting
|
|
79
|
-
end
|
|
80
|
-
|
|
81
78
|
##
|
|
82
79
|
# @private The default Google::Cloud::ErrorReporting::Project client used
|
|
83
80
|
# for the Google::Cloud::ErrorReporting.report API.
|
|
@@ -125,10 +122,13 @@ module Google
|
|
|
125
122
|
client_config: nil, project: nil, keyfile: nil
|
|
126
123
|
project_id ||= (project || ErrorReporting::Project.default_project_id)
|
|
127
124
|
project_id = project_id.to_s
|
|
128
|
-
|
|
125
|
+
raise ArgumentError, "project_id is missing" if project_id.empty?
|
|
126
|
+
|
|
127
|
+
scope ||= configure.scope
|
|
128
|
+
timeout ||= configure.timeout
|
|
129
|
+
client_config ||= configure.client_config
|
|
129
130
|
|
|
130
|
-
credentials ||= keyfile
|
|
131
|
-
credentials ||= ErrorReporting::Credentials.default(scope: scope)
|
|
131
|
+
credentials ||= (keyfile || default_credentials(scope: scope))
|
|
132
132
|
unless credentials.is_a? Google::Auth::Credentials
|
|
133
133
|
credentials = ErrorReporting::Credentials.new credentials,
|
|
134
134
|
scope: scope
|
|
@@ -147,6 +147,27 @@ module Google
|
|
|
147
147
|
# client, allows the {.report} public method to reuse these
|
|
148
148
|
# configured parameters.
|
|
149
149
|
#
|
|
150
|
+
# The following Stackdriver ErrorReporting configuration parameters are
|
|
151
|
+
# supported:
|
|
152
|
+
#
|
|
153
|
+
# * `project_id` - (String) Google Cloud Platform project identifier for
|
|
154
|
+
# the Stackdriver Error Reporting service you are connecting to. (The
|
|
155
|
+
# parameter `project` is considered deprecated, but may also be used.)
|
|
156
|
+
# * `credentials` - (String, Hash, Google::Auth::Credentials) The path to
|
|
157
|
+
# the keyfile as a String, the contents of the keyfile as a Hash, or a
|
|
158
|
+
# Google::Auth::Credentials object. (See {ErrorReporting::Credentials})
|
|
159
|
+
# (The parameter `keyfile` is considered deprecated, but may also be
|
|
160
|
+
# used.)
|
|
161
|
+
# * `scope` - (String, Array<String>) The OAuth 2.0 scopes controlling
|
|
162
|
+
# the set of resources and operations that the connection can access.
|
|
163
|
+
# * `timeout` - (Integer) Default timeout to use in requests.
|
|
164
|
+
# * `client_config` - (Hash) A hash of values to override the default
|
|
165
|
+
# behavior of the API client.
|
|
166
|
+
# * `service_name` - (String) Name for the application.
|
|
167
|
+
# * `service_version` - (String) Version identifier for the application.
|
|
168
|
+
# * `ignore_classes` - (Array<Exception>) Array of exception types that
|
|
169
|
+
# should not be reported.
|
|
170
|
+
#
|
|
150
171
|
# See the [Configuration
|
|
151
172
|
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/stackdriver/guides/instrumentation_configuration)
|
|
152
173
|
# for full configuration parameters.
|
|
@@ -157,7 +178,7 @@ module Google
|
|
|
157
178
|
#
|
|
158
179
|
# Google::Cloud::ErrorReporting.configure do |config|
|
|
159
180
|
# config.project_id = "my-project"
|
|
160
|
-
# config.
|
|
181
|
+
# config.credentials = "/path/to/keyfile.json"
|
|
161
182
|
# config.service_name = "my-service"
|
|
162
183
|
# config.service_version = "v8"
|
|
163
184
|
# end
|
|
@@ -169,7 +190,7 @@ module Google
|
|
|
169
190
|
# Google::Cloud::ErrorReporting.report exception
|
|
170
191
|
# end
|
|
171
192
|
#
|
|
172
|
-
# @return [
|
|
193
|
+
# @return [Google::Cloud::Config] The configuration object
|
|
173
194
|
# the Google::Cloud::ErrorReporting module uses.
|
|
174
195
|
#
|
|
175
196
|
def self.configure
|
|
@@ -226,10 +247,8 @@ module Google
|
|
|
226
247
|
def self.report exception, service_name: nil, service_version: nil
|
|
227
248
|
return if Google::Cloud.configure.use_error_reporting == false
|
|
228
249
|
|
|
229
|
-
service_name ||=
|
|
230
|
-
|
|
231
|
-
service_version ||= configure.service_version ||
|
|
232
|
-
Project.default_service_version
|
|
250
|
+
service_name ||= Project.default_service_name
|
|
251
|
+
service_version ||= Project.default_service_version
|
|
233
252
|
|
|
234
253
|
error_event = ErrorEvent.from_exception(exception).tap do |event|
|
|
235
254
|
event.service_name = service_name
|
|
@@ -245,13 +264,11 @@ module Google
|
|
|
245
264
|
# @private Create a private client to
|
|
246
265
|
def self.default_client
|
|
247
266
|
unless @@default_client
|
|
248
|
-
project_id =
|
|
249
|
-
|
|
250
|
-
keyfile = configure.keyfile ||
|
|
251
|
-
Google::Cloud.configure.keyfile
|
|
267
|
+
project_id = Project.default_project_id
|
|
268
|
+
credentials = default_credentials
|
|
252
269
|
|
|
253
270
|
@@default_client = AsyncErrorReporter.new(
|
|
254
|
-
new(
|
|
271
|
+
new(project_id: project_id, credentials: credentials)
|
|
255
272
|
)
|
|
256
273
|
end
|
|
257
274
|
|
|
@@ -259,6 +276,16 @@ module Google
|
|
|
259
276
|
end
|
|
260
277
|
|
|
261
278
|
private_class_method :default_client
|
|
279
|
+
|
|
280
|
+
##
|
|
281
|
+
# @private Default credentials.
|
|
282
|
+
def self.default_credentials scope: nil
|
|
283
|
+
Google::Cloud.configure.error_reporting.credentials ||
|
|
284
|
+
Google::Cloud.configure.credentials ||
|
|
285
|
+
ErrorReporting::Credentials.default(scope: scope)
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
private_class_method :default_credentials
|
|
262
289
|
end
|
|
263
290
|
end
|
|
264
291
|
end
|
|
@@ -81,7 +81,7 @@ module Google
|
|
|
81
81
|
return if error_event.nil?
|
|
82
82
|
begin
|
|
83
83
|
error_reporting.report error_event
|
|
84
|
-
rescue => e
|
|
84
|
+
rescue StandardError => e
|
|
85
85
|
warn error_event.message if error_event.message
|
|
86
86
|
warn ["#{e.class}: #{e.message}", e.backtrace].join("\n\t")
|
|
87
87
|
@last_exception = e
|
|
@@ -38,19 +38,19 @@ module Google
|
|
|
38
38
|
# error_reporting.project_id #=> "my-project"
|
|
39
39
|
#
|
|
40
40
|
class Credentials < Google::Auth::Credentials
|
|
41
|
-
SCOPE = ["https://www.googleapis.com/auth/cloud-platform"]
|
|
42
|
-
PATH_ENV_VARS = %w
|
|
41
|
+
SCOPE = ["https://www.googleapis.com/auth/cloud-platform"].freeze
|
|
42
|
+
PATH_ENV_VARS = %w[ERROR_REPORTING_CREDENTIALS
|
|
43
43
|
GOOGLE_CLOUD_CREDENTIALS
|
|
44
44
|
ERROR_REPORTING_KEYFILE
|
|
45
45
|
GOOGLE_CLOUD_KEYFILE
|
|
46
|
-
GCLOUD_KEYFILE
|
|
47
|
-
JSON_ENV_VARS = %w
|
|
46
|
+
GCLOUD_KEYFILE].freeze
|
|
47
|
+
JSON_ENV_VARS = %w[ERROR_REPORTING_CREDENTIALS_JSON
|
|
48
48
|
GOOGLE_CLOUD_CREDENTIALS_JSON
|
|
49
49
|
ERROR_REPORTING_KEYFILE_JSON
|
|
50
50
|
GOOGLE_CLOUD_KEYFILE_JSON
|
|
51
|
-
GCLOUD_KEYFILE_JSON
|
|
51
|
+
GCLOUD_KEYFILE_JSON].freeze
|
|
52
52
|
DEFAULT_PATHS = \
|
|
53
|
-
["~/.config/gcloud/application_default_credentials.json"]
|
|
53
|
+
["~/.config/gcloud/application_default_credentials.json"].freeze
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
end
|
|
@@ -54,7 +54,7 @@ module Google
|
|
|
54
54
|
error_reporting ||
|
|
55
55
|
ErrorReporting::AsyncErrorReporter.new(
|
|
56
56
|
ErrorReporting.new(project: configuration.project_id,
|
|
57
|
-
|
|
57
|
+
credentials: configuration.credentials)
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
# Set module default client to reuse the same client. Update module
|
|
@@ -154,16 +154,20 @@ module Google
|
|
|
154
154
|
# already.
|
|
155
155
|
#
|
|
156
156
|
def load_config **kwargs
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
configuration.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
157
|
+
project_id = kwargs[:project] || kwargs[:project_id]
|
|
158
|
+
configuration.project_id = project_id unless project_id.nil?
|
|
159
|
+
|
|
160
|
+
creds = kwargs[:credentials] || kwargs[:keyfile]
|
|
161
|
+
configuration.credentials = creds unless creds.nil?
|
|
162
|
+
|
|
163
|
+
service_name = kwargs[:service_name]
|
|
164
|
+
configuration.service_name = service_name unless service_name.nil?
|
|
165
|
+
|
|
166
|
+
service_vers = kwargs[:service_version]
|
|
167
|
+
configuration.service_version = service_vers unless service_vers.nil?
|
|
168
|
+
|
|
169
|
+
ignores = kwargs[:ignore_classes]
|
|
170
|
+
configuration.ignore_classes = ignores unless ignores.nil?
|
|
167
171
|
|
|
168
172
|
init_default_config
|
|
169
173
|
end
|
|
@@ -171,13 +175,13 @@ module Google
|
|
|
171
175
|
##
|
|
172
176
|
# Fallback to default configuration values if not defined already
|
|
173
177
|
def init_default_config
|
|
174
|
-
configuration.project_id ||=
|
|
178
|
+
configuration.project_id ||= begin
|
|
175
179
|
(Cloud.configure.project_id ||
|
|
176
180
|
ErrorReporting::Project.default_project_id)
|
|
177
|
-
|
|
181
|
+
end
|
|
182
|
+
configuration.credentials ||= Cloud.configure.credentials
|
|
178
183
|
configuration.service_name ||=
|
|
179
184
|
ErrorReporting::Project.default_service_name
|
|
180
|
-
|
|
181
185
|
configuration.service_version ||=
|
|
182
186
|
ErrorReporting::Project.default_service_version
|
|
183
187
|
configuration.ignore_classes = Array(configuration.ignore_classes)
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
require "google/cloud/errors"
|
|
17
|
-
require "google/cloud/env"
|
|
18
17
|
require "google/cloud/error_reporting/service"
|
|
19
18
|
require "google/cloud/error_reporting/credentials"
|
|
20
19
|
require "google/cloud/error_reporting/error_event"
|
|
@@ -44,41 +43,42 @@ module Google
|
|
|
44
43
|
#
|
|
45
44
|
class Project
|
|
46
45
|
##
|
|
47
|
-
# Find default project_id from
|
|
48
|
-
#
|
|
49
|
-
# query from GCE meta service.
|
|
46
|
+
# Find default project_id from the configuration, environment
|
|
47
|
+
# varaibles, or query from GCE meta service.
|
|
50
48
|
#
|
|
51
49
|
# @return [String] default valid GCP project_id
|
|
52
50
|
#
|
|
53
51
|
def self.default_project_id
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
Google::Cloud.configure.error_reporting.project_id ||
|
|
53
|
+
Google::Cloud.configure.project_id ||
|
|
56
54
|
Google::Cloud.env.project_id
|
|
57
55
|
end
|
|
58
56
|
class << self
|
|
59
|
-
|
|
57
|
+
alias default_project default_project_id
|
|
60
58
|
end
|
|
61
59
|
|
|
62
60
|
##
|
|
63
|
-
# Find default service_name from
|
|
64
|
-
#
|
|
61
|
+
# Find default service_name from the configuration, environment
|
|
62
|
+
# varaibles, or query from GCE meta service, or just "ruby".
|
|
65
63
|
#
|
|
66
64
|
# @return [String] default GCP service_name
|
|
67
65
|
#
|
|
68
66
|
def self.default_service_name
|
|
69
|
-
|
|
67
|
+
Google::Cloud.configure.error_reporting.service_name ||
|
|
68
|
+
Google::Cloud.configure.service_name ||
|
|
70
69
|
Google::Cloud.env.app_engine_service_id ||
|
|
71
70
|
"ruby"
|
|
72
71
|
end
|
|
73
72
|
|
|
74
73
|
##
|
|
75
|
-
# Find default service_version from
|
|
76
|
-
#
|
|
74
|
+
# Find default service_version from the configuration, environment
|
|
75
|
+
# varaibles, or query from GCE meta service.
|
|
77
76
|
#
|
|
78
77
|
# @return [String] default GCP service_version
|
|
79
78
|
#
|
|
80
79
|
def self.default_service_version
|
|
81
|
-
|
|
80
|
+
Google::Cloud.configure.error_reporting.service_version ||
|
|
81
|
+
Google::Cloud.configure.service_version ||
|
|
82
82
|
Google::Cloud.env.app_engine_service_version
|
|
83
83
|
end
|
|
84
84
|
|
|
@@ -108,7 +108,7 @@ module Google
|
|
|
108
108
|
def project_id
|
|
109
109
|
service.project
|
|
110
110
|
end
|
|
111
|
-
|
|
111
|
+
alias project project_id
|
|
112
112
|
|
|
113
113
|
##
|
|
114
114
|
# Report a {Google::Cloud::ErrorReporting::ErrorEvent} to Stackdriver
|
|
@@ -90,7 +90,7 @@ module Google
|
|
|
90
90
|
# Verify credentials and set use_error_reporting to false if
|
|
91
91
|
# credentials are invalid
|
|
92
92
|
unless valid_credentials? ErrorReporting.configure.project_id,
|
|
93
|
-
ErrorReporting.configure.
|
|
93
|
+
ErrorReporting.configure.credentials
|
|
94
94
|
Cloud.configure.use_error_reporting = false
|
|
95
95
|
return
|
|
96
96
|
end
|
|
@@ -100,6 +100,8 @@ module Google
|
|
|
100
100
|
Google::Cloud.configure.use_error_reporting ||= Rails.env.production?
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
+
# rubocop:disable all
|
|
104
|
+
|
|
103
105
|
##
|
|
104
106
|
# @private Merge Rails configuration into Error Reporting
|
|
105
107
|
# instrumentation configuration.
|
|
@@ -109,14 +111,22 @@ module Google
|
|
|
109
111
|
|
|
110
112
|
Cloud.configure.use_error_reporting ||= gcp_config.use_error_reporting
|
|
111
113
|
ErrorReporting.configure do |config|
|
|
112
|
-
config.project_id ||=
|
|
113
|
-
config.
|
|
114
|
-
config.
|
|
115
|
-
config.
|
|
114
|
+
config.project_id ||= config.project
|
|
115
|
+
config.project_id ||= er_config.project_id || er_config.project
|
|
116
|
+
config.project_id ||= gcp_config.project_id || gcp_config.project
|
|
117
|
+
config.credentials ||= config.keyfile
|
|
118
|
+
config.credentials ||= er_config.credentials || er_config.keyfile
|
|
119
|
+
config.credentials ||= gcp_config.credentials || gcp_config.keyfile
|
|
120
|
+
config.service_name ||= \
|
|
121
|
+
(er_config.service_name || gcp_config.service_name)
|
|
122
|
+
config.service_version ||= \
|
|
123
|
+
(er_config.service_version || gcp_config.service_version)
|
|
116
124
|
config.ignore_classes ||= er_config.ignore_classes
|
|
117
125
|
end
|
|
118
126
|
end
|
|
119
127
|
|
|
128
|
+
# rubocop:enable all
|
|
129
|
+
|
|
120
130
|
##
|
|
121
131
|
# Fallback to default config values if config parameters not provided.
|
|
122
132
|
def self.init_default_config
|
|
@@ -138,7 +148,7 @@ module Google
|
|
|
138
148
|
# if credentials is not a Credentials object, create one
|
|
139
149
|
ErrorReporting::Credentials.new credentials
|
|
140
150
|
end
|
|
141
|
-
rescue => e
|
|
151
|
+
rescue StandardError => e
|
|
142
152
|
STDOUT.puts "Note: Google::Cloud::ErrorReporting is disabled " \
|
|
143
153
|
"because it failed to authorize with the service. (#{e.message})"
|
|
144
154
|
return false
|
|
@@ -71,7 +71,7 @@ module Google
|
|
|
71
71
|
#
|
|
72
72
|
def report error_event
|
|
73
73
|
if error_event.message.nil? || error_event.message.empty?
|
|
74
|
-
|
|
74
|
+
raise ArgumentError, "Cannot report empty message"
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
error_event_grpc = error_event.to_grpc
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: google-cloud-error_reporting
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.30.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Google Inc
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-02-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: google-cloud-core
|
|
@@ -16,28 +16,28 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.
|
|
19
|
+
version: '1.2'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.
|
|
26
|
+
version: '1.2'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: stackdriver-core
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '1.
|
|
33
|
+
version: '1.3'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '1.
|
|
40
|
+
version: '1.3'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: google-gax
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -112,16 +112,16 @@ dependencies:
|
|
|
112
112
|
name: rubocop
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
|
-
- - "
|
|
115
|
+
- - "~>"
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 0.
|
|
117
|
+
version: 0.50.0
|
|
118
118
|
type: :development
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
|
-
- - "
|
|
122
|
+
- - "~>"
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 0.
|
|
124
|
+
version: 0.50.0
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: railties
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -253,7 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
253
253
|
version: '0'
|
|
254
254
|
requirements: []
|
|
255
255
|
rubyforge_project:
|
|
256
|
-
rubygems_version: 2.7.
|
|
256
|
+
rubygems_version: 2.7.6
|
|
257
257
|
signing_key:
|
|
258
258
|
specification_version: 4
|
|
259
259
|
summary: API Client library for Stackdriver Error Reporting
|