bugsnag 4.1.0 → 4.2.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/CHANGELOG.md +8 -0
- data/README.md +38 -341
- data/VERSION +1 -1
- data/lib/bugsnag/resque.rb +1 -1
- data/lib/bugsnag/sidekiq.rb +1 -1
- metadata +2 -5
- data/docs/Configuration.md +0 -242
- data/docs/Notification Options.md +0 -269
- data/docs/README.md +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7108374ad36589c3f1f93ab360e5b44aa4c26931
|
4
|
+
data.tar.gz: a58b1d6d3b4947a1abd72d6cc39c4ef19a9f1ab1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c835800cb05a0db5761f722617209c29db6d6cb798e60f39097a97a916771f682ca0f7ad659156d2e113d773d636e7801ddb2e964951c26fb7e4d12c91de029
|
7
|
+
data.tar.gz: 05cfe84b373975f308fe753b81e8d74a3cee221376d6e7feb6b65d2078cc22ddf05cd7da6ce4d445c37eb9932806d4744fd62202b471a11b49901fb302bceb0d
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
## 4.2.0 (17 Jun 2016)
|
5
|
+
|
6
|
+
### Enhancements
|
7
|
+
|
8
|
+
* Add the name of the job class in context for Sidekiq and Resque errors
|
9
|
+
| [Johan Lundström](https://github.com/johanlunds)
|
10
|
+
| [#293](https://github.com/bugsnag/bugsnag-ruby/pull/293)
|
11
|
+
|
4
12
|
## 4.1.0 (11 May 2016)
|
5
13
|
|
6
14
|
### Enhancements
|
data/README.md
CHANGED
@@ -1,353 +1,50 @@
|
|
1
|
-
Bugsnag
|
2
|
-
|
1
|
+
# Bugsnag exception reporter for Ruby
|
2
|
+
[](https://travis-ci.org/bugsnag/bugsnag-ruby)
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
The Bugsnag exception reporter for Ruby gives you instant notification of exceptions
|
6
|
+
thrown from your **[Rails](https://bugsnag.com/platforms/rails)**, **Sinatra**, **Rack** or **plain Ruby** app.
|
6
7
|
Any uncaught exceptions will trigger a notification to be sent to your
|
7
8
|
Bugsnag project.
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
### Installation
|
40
|
-
|
41
|
-
1. Add the `bugsnag` gem to your `Gemfile`
|
42
|
-
|
43
|
-
```ruby
|
44
|
-
gem "bugsnag"
|
45
|
-
```
|
46
|
-
|
47
|
-
2. Install the gem
|
48
|
-
|
49
|
-
```shell
|
50
|
-
bundle install
|
51
|
-
```
|
52
|
-
|
53
|
-
3. Configure the Bugsnag module with your API key.
|
54
|
-
|
55
|
-
**Rails**: Use our generator
|
56
|
-
|
57
|
-
```shell
|
58
|
-
rails generate bugsnag YOUR_API_KEY_HERE
|
59
|
-
```
|
60
|
-
|
61
|
-
**Other Ruby/Rack/Sinatra apps**: Put this snippet in your initialization.
|
62
|
-
|
63
|
-
```ruby
|
64
|
-
Bugsnag.configure do |config|
|
65
|
-
config.api_key = "YOUR_API_KEY_HERE"
|
66
|
-
end
|
67
|
-
```
|
68
|
-
|
69
|
-
The Bugsnag module will read the `BUGSNAG_API_KEY` environment variable if
|
70
|
-
you do not configure one automatically.
|
71
|
-
|
72
|
-
### Rake Integration
|
73
|
-
|
74
|
-
Rake integration is automatically enabled in Rails 3/4/5 apps, so providing you
|
75
|
-
load the environment in your Rake tasks you dont need to do anything to get Rake
|
76
|
-
support. If you choose not to load your environment, you can manually configure
|
77
|
-
Bugsnag with a `bugsnag.configure` block in the Rakefile.
|
78
|
-
|
79
|
-
Bugsnag can automatically notify of all exceptions that happen in your rake
|
80
|
-
tasks. In order to enable this, you need to `require "bugsnag/rake"` in your
|
81
|
-
Rakefile, like so:
|
82
|
-
|
83
|
-
```ruby
|
84
|
-
require File.expand_path('../config/application', __FILE__)
|
85
|
-
require 'rake'
|
86
|
-
require "bugsnag/rake"
|
87
|
-
|
88
|
-
Bugsnag.configure do |config|
|
89
|
-
config.api_key = "YOUR_API_KEY_HERE"
|
90
|
-
end
|
91
|
-
|
92
|
-
YourApp::Application.load_tasks
|
93
|
-
```
|
94
|
-
|
95
|
-
> Note: We also configure Bugsnag in the Rakefile, so the tasks that do not load
|
96
|
-
> the full environment can still notify Bugsnag.
|
97
|
-
|
98
|
-
### Sending a Test Notification
|
99
|
-
|
100
|
-
To test that bugsnag is properly configured, you can use the `test_exception`
|
101
|
-
rake task:
|
102
|
-
|
103
|
-
```bash
|
104
|
-
rake bugsnag:test_exception
|
105
|
-
```
|
106
|
-
|
107
|
-
A test exception will be sent to your bugsnag dashboard if everything is
|
108
|
-
configured correctly.
|
109
|
-
|
110
|
-
Usage
|
111
|
-
-----
|
112
|
-
|
113
|
-
### Catching and Reporting Exceptions
|
114
|
-
|
115
|
-
Bugsnag Ruby works out of the box with Rails, Sidekiq, Resque, DelayedJob (3+),
|
116
|
-
Mailman, Rake and Rack. It should be easy to add support for other frameworks,
|
117
|
-
either by sending a pull request here or adding a hook to those projects.
|
118
|
-
|
119
|
-
#### Rack/Sinatra Apps
|
120
|
-
|
121
|
-
Activate the Bugsnag Rack middleware
|
122
|
-
|
123
|
-
```ruby
|
124
|
-
use Bugsnag::Rack
|
125
|
-
```
|
126
|
-
|
127
|
-
**Sinatra**: Note that `raise_errors` must be enabled. If you are
|
128
|
-
using custom error handlers, then you will need to notify Bugsnag
|
129
|
-
explicitly:
|
130
|
-
|
131
|
-
```ruby
|
132
|
-
error 500 do
|
133
|
-
Bugsnag.auto_notify($!)
|
134
|
-
erb :"errors/500"
|
135
|
-
end
|
136
|
-
```
|
137
|
-
|
138
|
-
#### Custom Ruby Scripts
|
139
|
-
|
140
|
-
**Custom Ruby Scripts**: If you are running a standard ruby script,
|
141
|
-
you can ensure that all exceptions are sent to Bugsnag by adding
|
142
|
-
the following code to your app:
|
143
|
-
|
144
|
-
```ruby
|
145
|
-
at_exit do
|
146
|
-
if $!
|
147
|
-
Bugsnag.notify($!)
|
148
|
-
end
|
149
|
-
end
|
150
|
-
```
|
151
|
-
|
152
|
-
#### EventMachine Apps
|
153
|
-
|
154
|
-
If your app uses [EventMachine](http://rubyeventmachine.com/) you'll need to
|
155
|
-
manually notify Bugsnag of errors. There are two ways to do this in your
|
156
|
-
EventMachine apps, first you should implement `EventMachine.error_handler`:
|
157
|
-
|
158
|
-
```ruby
|
159
|
-
EventMachine.error_handler{|e|
|
160
|
-
Bugsnag.notify(e)
|
161
|
-
}
|
162
|
-
```
|
163
|
-
|
164
|
-
If you want more fine-grained error handling, you can use the
|
165
|
-
[errback](http://eventmachine.rubyforge.org/EventMachine/Deferrable.html#errback-instance_method)
|
166
|
-
function, for example:
|
167
|
-
|
168
|
-
```ruby
|
169
|
-
EventMachine::run do
|
170
|
-
server = EventMachine::start_server('0.0.0.0', PORT, MyServer)
|
171
|
-
server.errback {
|
172
|
-
EM.defer do
|
173
|
-
Bugsnag.notify(RuntimeError.new("Something bad happened"))
|
174
|
-
end
|
175
|
-
}
|
176
|
-
end
|
177
|
-
```
|
178
|
-
|
179
|
-
For this to work, include [Deferrable](http://eventmachine.rubyforge.org/EventMachine/Deferrable.html)
|
180
|
-
in your `MyServer`, then whenever you want to raise an error, call `fail`.
|
181
|
-
|
182
|
-
### Sending Non-fatal Exceptions
|
183
|
-
|
184
|
-
If you would like to send non-fatal exceptions to Bugsnag, you can call
|
185
|
-
`Bugsnag.notify`:
|
186
|
-
|
187
|
-
```ruby
|
188
|
-
Bugsnag.notify(RuntimeError.new("Something broke"))
|
189
|
-
```
|
190
|
-
|
191
|
-
Additional information can be attached to a notification using a configuration
|
192
|
-
block:
|
193
|
-
|
194
|
-
```ruby
|
195
|
-
Bugsnag.notify(RuntimeError.new("Something broke")) do |notif|
|
196
|
-
notif.severity = 'warning'
|
197
|
-
end
|
198
|
-
```
|
199
|
-
|
200
|
-
The complete list of available properties is available in
|
201
|
-
[the documentation for the `Notification` object](https://github.com/bugsnag/bugsnag-ruby/blob/master/docs/Notification%20Options.md#notification-object)
|
202
|
-
|
203
|
-
### Callbacks
|
204
|
-
|
205
|
-
The Bugsnag Notifier for Ruby provides its own middleware system, similar to
|
206
|
-
the one used in Rack applications. Middleware allows you to execute code
|
207
|
-
before and after an exception is sent to bugsnag.com, so you can do things
|
208
|
-
such as:
|
209
|
-
|
210
|
-
- Send application-specific information along with exceptions, eg. the name
|
211
|
-
of the currently logged in user,
|
212
|
-
- Write exception information to your internal logging system.
|
213
|
-
|
214
|
-
To make your own middleware, create a class that looks like this:
|
215
|
-
|
216
|
-
```ruby
|
217
|
-
class MyMiddleware
|
218
|
-
def initialize(bugsnag)
|
219
|
-
@bugsnag = bugsnag
|
220
|
-
end
|
221
|
-
|
222
|
-
def call(notification)
|
223
|
-
# Your custom "before notify" code
|
224
|
-
|
225
|
-
@bugsnag.call(notification)
|
226
|
-
|
227
|
-
# Your custom "after notify" code
|
228
|
-
end
|
229
|
-
end
|
230
|
-
```
|
231
|
-
|
232
|
-
You can then add your middleware to the middleware stack as follows:
|
233
|
-
|
234
|
-
```ruby
|
235
|
-
Bugsnag.configure do |config|
|
236
|
-
config.middleware.use MyMiddleware
|
237
|
-
end
|
238
|
-
```
|
239
|
-
|
240
|
-
You can also view the order of the currently activated middleware by running `rake bugsnag:middleware`.
|
241
|
-
|
242
|
-
Check out Bugsnag's [built in middleware classes](https://github.com/bugsnag/bugsnag-ruby/tree/master/lib/bugsnag/middleware)
|
243
|
-
for some real examples of middleware in action.
|
244
|
-
|
245
|
-
|
246
|
-
Deploy Tracking
|
247
|
-
---------------
|
248
|
-
|
249
|
-
Bugsnag allows you to track deploys of your apps. By sending the
|
250
|
-
source revision or application version to bugsnag.com when you deploy a new
|
251
|
-
version of your app, you'll be able to see which deploy each error was
|
252
|
-
introduced in.
|
253
|
-
|
254
|
-
### Using Heroku
|
255
|
-
|
256
|
-
You can easily add Bugsnag deploy tracking to your Heroku application by
|
257
|
-
running the following command from your application's directory:
|
258
|
-
|
259
|
-
```shell
|
260
|
-
$ bundle exec rake bugsnag:heroku:add_deploy_hook
|
261
|
-
```
|
262
|
-
|
263
|
-
If you have multiple Heroku apps, you can specify which app to add the hook
|
264
|
-
for as with the `HEROKU_APP` environment variable:
|
265
|
-
|
266
|
-
```shell
|
267
|
-
$ bundle exec rake bugsnag:heroku:add_deploy_hook HEROKU_APP=my-app
|
268
|
-
```
|
269
|
-
|
270
|
-
### Using Capistrano
|
271
|
-
|
272
|
-
If you use [capistrano](https://github.com/capistrano/capistrano) to deploy
|
273
|
-
your apps, you can enable deploy tracking by adding the integration to your
|
274
|
-
app's `deploy.rb`:
|
275
|
-
|
276
|
-
```ruby
|
277
|
-
require "bugsnag/capistrano"
|
278
|
-
|
279
|
-
set :bugsnag_api_key, "api_key_here"
|
280
|
-
```
|
281
|
-
|
282
|
-
### Using Rake
|
283
|
-
|
284
|
-
If you aren't using capistrano, you can run the following rake command from
|
285
|
-
your deploy scripts.
|
286
|
-
|
287
|
-
```shell
|
288
|
-
rake bugsnag:deploy BUGSNAG_REVISION=source-control-revision BUGSNAG_RELEASE_STAGE=production BUGSNAG_API_KEY=api-key-here
|
289
|
-
```
|
290
|
-
|
291
|
-
The bugsnag rake tasks will be automatically available for Rails 3/4
|
292
|
-
apps, to make the rake tasks available in other apps, add the following to
|
293
|
-
your `Rakefile`:
|
294
|
-
|
295
|
-
```ruby
|
296
|
-
require "bugsnag/tasks"
|
297
|
-
```
|
298
|
-
|
299
|
-
### Configuring Deploy Tracking
|
300
|
-
|
301
|
-
You can set the following environmental variables to override or specify
|
302
|
-
additional deploy information:
|
303
|
-
|
304
|
-
- **BUGSNAG_API_KEY** -
|
305
|
-
Your Bugsnag API key (required).
|
306
|
-
- **BUGSNAG_RELEASE_STAGE** -
|
307
|
-
The release stage (eg, production, staging) currently being deployed.
|
308
|
-
This is set automatically from your Bugsnag settings or rails/rack
|
309
|
-
environment.
|
310
|
-
- **BUGSNAG_REPOSITORY** -
|
311
|
-
The repository from which you are deploying the code. This is set
|
312
|
-
automatically if you are using capistrano.
|
313
|
-
- **BUGSNAG_BRANCH** -
|
314
|
-
The source control branch from which you are deploying the code.
|
315
|
-
This is set automatically if you are using capistrano.
|
316
|
-
- **BUGSNAG_REVISION** -
|
317
|
-
The source control revision for the code you are currently deploying.
|
318
|
-
This is set automatically if you are using capistrano.
|
319
|
-
- **BUGSNAG_APP_VERSION** -
|
320
|
-
The app version of the code you are currently deploying. Only set this
|
321
|
-
if you tag your releases with [semantic version numbers](http://semver.org/)
|
322
|
-
and deploy infrequently.
|
323
|
-
|
324
|
-
For more information, check out the [deploy tracking api](https://bugsnag.com/docs/deploy-tracking-api)
|
325
|
-
documentation.
|
326
|
-
|
327
|
-
|
328
|
-
Demo Applications
|
329
|
-
-----------------
|
330
|
-
|
331
|
-
[There are demo applications that use the Bugsnag Ruby gem](https://github.com/bugsnag/bugsnag-example-apps/tree/master/apps/ruby):
|
332
|
-
examples include Rails, Sinatra, Rack, Padrino integrations, etc.
|
333
|
-
|
334
|
-
|
335
|
-
Support
|
336
|
-
-------
|
337
|
-
|
338
|
-
* [Additional Documentation](https://github.com/bugsnag/bugsnag-ruby/tree/master/docs)
|
10
|
+
## Features
|
11
|
+
|
12
|
+
* Automatically report unhandled exceptions and crashes
|
13
|
+
* Report handled exceptions
|
14
|
+
* Attach user information to determine how many people are affected by a crash
|
15
|
+
* Send customized diagnostic data
|
16
|
+
|
17
|
+
## Getting started
|
18
|
+
|
19
|
+
1. [Create a Bugsnag account](https://bugsnag.com)
|
20
|
+
2. Complete the instructions in the integration guide for your framework:
|
21
|
+
* [Rack](http://docs.bugsnag.com/platforms/ruby/rack)
|
22
|
+
* [Rails](http://docs.bugsnag.com/platforms/ruby/rails)
|
23
|
+
* [Rake](http://docs.bugsnag.com/platforms/ruby/rake)
|
24
|
+
* [Sidekiq](http://docs.bugsnag.com/platforms/ruby/sidekiq)
|
25
|
+
* [Other Ruby apps](http://docs.bugsnag.com/platforms/ruby/other)
|
26
|
+
* For [EventMachine](http://rubyeventmachine.com) integration, see [`bugsnag-em`](https://github.com/bugsnag/bugsnag-em)
|
27
|
+
3. Relax!
|
28
|
+
|
29
|
+
## Support
|
30
|
+
|
31
|
+
* Read the configuration reference:
|
32
|
+
* [Rack](http://docs.bugsnag.com/platforms/ruby/rack/configuration-options)
|
33
|
+
* [Rails](http://docs.bugsnag.com/platforms/ruby/rails/configuration-options)
|
34
|
+
* [Rake](http://docs.bugsnag.com/platforms/ruby/rake/configuration-options)
|
35
|
+
* [Sidekiq](http://docs.bugsnag.com/platforms/ruby/sidekiq/configuration-options)
|
36
|
+
* [Other Ruby apps](http://docs.bugsnag.com/platforms/ruby/other/configuration-options)
|
37
|
+
* Check out some [example apps integrated with Bugsnag](https://github.com/bugsnag/bugsnag-example-apps/tree/master/apps/ruby) using Rails, Sinatra, Padrino, and more.
|
339
38
|
* [Search open and closed issues](https://github.com/bugsnag/bugsnag-ruby/issues?utf8=✓&q=is%3Aissue) for similar problems
|
340
39
|
* [Report a bug or request a feature](https://github.com/bugsnag/bugsnag-ruby/issues/new)
|
341
40
|
|
41
|
+
## Contributing
|
342
42
|
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
We'd love you to file issues and send pull requests. The [contributing guidelines](https://github.com/bugsnag/bugsnag-ruby/CONTRIBUTING.md) details the process of building and testing `bugsnag-ruby`, as well as the pull request process. Feel free to comment on [existing issues](https://github.com/bugsnag/bugsnag-ruby/issues) for clarification or starting points.
|
347
|
-
|
43
|
+
All contributors are welcome! For information on how to build, test
|
44
|
+
and release `bugsnag-ruby`, see our
|
45
|
+
[contributing guide](https://github.com/bugsnag/bugsnag-ruby/blob/master/CONTRIBUTING.md). Feel free to comment on [existing issues](https://github.com/bugsnag/bugsnag-ruby/issues) for clarification or starting points.
|
348
46
|
|
349
|
-
License
|
350
|
-
-------
|
47
|
+
## License
|
351
48
|
|
352
49
|
The Bugsnag ruby notifier is free software released under the MIT License.
|
353
50
|
See [LICENSE.txt](LICENSE.txt) for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
4.
|
1
|
+
4.2.0
|
data/lib/bugsnag/resque.rb
CHANGED
@@ -26,7 +26,7 @@ module Bugsnag
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def save
|
29
|
-
Bugsnag.auto_notify(exception, {:context => "
|
29
|
+
Bugsnag.auto_notify(exception, {:context => "#{payload['class']}@#{queue}", :payload => payload, :delivery_method => :synchronous})
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
data/lib/bugsnag/sidekiq.rb
CHANGED
@@ -29,7 +29,7 @@ if ::Sidekiq::VERSION < '3'
|
|
29
29
|
else
|
30
30
|
::Sidekiq.configure_server do |config|
|
31
31
|
config.error_handlers << lambda do |ex, ctx|
|
32
|
-
Bugsnag.auto_notify(ex, :sidekiq => ctx, :context => "
|
32
|
+
Bugsnag.auto_notify(ex, :sidekiq => ctx, :context => "#{ctx['class']}@#{ctx['queue']}")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bugsnag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -115,9 +115,6 @@ files:
|
|
115
115
|
- Rakefile
|
116
116
|
- VERSION
|
117
117
|
- bugsnag.gemspec
|
118
|
-
- docs/Configuration.md
|
119
|
-
- docs/Notification Options.md
|
120
|
-
- docs/README.md
|
121
118
|
- lib/bugsnag.rb
|
122
119
|
- lib/bugsnag/capistrano.rb
|
123
120
|
- lib/bugsnag/capistrano2.rb
|
data/docs/Configuration.md
DELETED
@@ -1,242 +0,0 @@
|
|
1
|
-
# `bugsnag-ruby` Configuration
|
2
|
-
|
3
|
-
To configure additional Bugsnag settings, use the block syntax and set any
|
4
|
-
settings you need on the `config` block variable. For example:
|
5
|
-
|
6
|
-
```ruby
|
7
|
-
Bugsnag.configure do |config|
|
8
|
-
config.api_key = "your-api-key-here"
|
9
|
-
config.notify_release_stages = ["production", "development"]
|
10
|
-
end
|
11
|
-
```
|
12
|
-
|
13
|
-
## Available Options
|
14
|
-
|
15
|
-
### `api_key`
|
16
|
-
|
17
|
-
Your Bugsnag API key (required).
|
18
|
-
|
19
|
-
```ruby
|
20
|
-
config.api_key = "your-api-key-here"
|
21
|
-
```
|
22
|
-
|
23
|
-
### `app_type`
|
24
|
-
|
25
|
-
You can set the type of application executing the current code by using
|
26
|
-
`app_type`:
|
27
|
-
|
28
|
-
```ruby
|
29
|
-
config.app_type = "resque"
|
30
|
-
```
|
31
|
-
|
32
|
-
This is usually used to represent if you are running in a Rails server, Sidekiq
|
33
|
-
job or Rake task for example. Bugsnag will automatically detect most application
|
34
|
-
types for you.
|
35
|
-
|
36
|
-
### `app_version`
|
37
|
-
|
38
|
-
If you want to track in which versions of your application each exception
|
39
|
-
happens, you can set `app_version`. This is set to `nil` by default.
|
40
|
-
|
41
|
-
```ruby
|
42
|
-
config.app_version = "2.5.1"
|
43
|
-
```
|
44
|
-
|
45
|
-
### `auto_notify`
|
46
|
-
|
47
|
-
By default, we will automatically notify Bugsnag of any fatal exceptions
|
48
|
-
in your application. If you want to stop this from happening, you can set
|
49
|
-
`auto_notify`:
|
50
|
-
|
51
|
-
```ruby
|
52
|
-
config.auto_notify = false
|
53
|
-
```
|
54
|
-
|
55
|
-
### `endpoint`
|
56
|
-
|
57
|
-
By default, we'll send crashes to *notify.bugsnag.com* to display them on
|
58
|
-
your dashboard. If you are using *Bugsnag Enterprise* you'll need to set
|
59
|
-
this to be your *Event Server* endpoint, for example:
|
60
|
-
|
61
|
-
```ruby
|
62
|
-
config.endpoint = "bugsnag.example.com:49000"
|
63
|
-
```
|
64
|
-
|
65
|
-
### `ignore_classes`
|
66
|
-
|
67
|
-
Sets for which exception classes we should not send exceptions to bugsnag.com.
|
68
|
-
|
69
|
-
```ruby
|
70
|
-
config.ignore_classes << "ActiveRecord::StatementInvalid"
|
71
|
-
```
|
72
|
-
|
73
|
-
You can also provide a lambda function here to ignore by other exception
|
74
|
-
attributes or by a regex:
|
75
|
-
|
76
|
-
```ruby
|
77
|
-
config.ignore_classes << lambda {|ex| ex.message =~ /timeout/}
|
78
|
-
```
|
79
|
-
|
80
|
-
By default, `ignore_classes` contains the following:
|
81
|
-
|
82
|
-
```ruby
|
83
|
-
[
|
84
|
-
"ActiveRecord::RecordNotFound",
|
85
|
-
"ActionController::RoutingError",
|
86
|
-
"ActionController::InvalidAuthenticityToken",
|
87
|
-
"CGI::Session::CookieStore::TamperedWithCookie",
|
88
|
-
"ActionController::UnknownAction",
|
89
|
-
"AbstractController::ActionNotFound"
|
90
|
-
]
|
91
|
-
```
|
92
|
-
|
93
|
-
### `ignore_user_agents`
|
94
|
-
|
95
|
-
Sets an array of Regexps that can be used to ignore exceptions from
|
96
|
-
certain user agents.
|
97
|
-
|
98
|
-
```ruby
|
99
|
-
config.ignore_user_agents << %r{Chrome}
|
100
|
-
```
|
101
|
-
|
102
|
-
By default, `ignore_user_agents` is empty, so exceptions caused by all
|
103
|
-
user agents are reported.
|
104
|
-
|
105
|
-
### `logger`
|
106
|
-
|
107
|
-
Sets which logger to use for Bugsnag log messages. In rails apps, this is
|
108
|
-
automatically set to use `Rails.logger`, otherwise it will be set to
|
109
|
-
`Logger.new(STDOUT)`.
|
110
|
-
|
111
|
-
### `middleware`
|
112
|
-
|
113
|
-
Provides access to the middleware stack, see the
|
114
|
-
[Bugsnag Middleware](#bugsnag-middleware) section below for details.
|
115
|
-
|
116
|
-
### `notify_release_stages`
|
117
|
-
|
118
|
-
By default, we will notify Bugsnag of exceptions that happen in any
|
119
|
-
`release_stage`. If you would like to change which release stages
|
120
|
-
notify Bugsnag of exceptions you can set `notify_release_stages`:
|
121
|
-
|
122
|
-
```ruby
|
123
|
-
config.notify_release_stages = ["production", "development"]
|
124
|
-
```
|
125
|
-
|
126
|
-
### `params_filters`
|
127
|
-
|
128
|
-
Sets which keys should be filtered out from `params` hashes before sending
|
129
|
-
them to Bugsnag. Use this if you want to ensure you don't send sensitive data
|
130
|
-
such as passwords, and credit card numbers to our servers. You can add both
|
131
|
-
strings and regular expressions to this array. When adding strings, keys which
|
132
|
-
*contain* the string will be filtered. When adding regular expressions, any
|
133
|
-
keys which *match* the regular expression will be filtered.
|
134
|
-
|
135
|
-
```ruby
|
136
|
-
config.params_filters += ["credit_card_number", /^password$/]
|
137
|
-
```
|
138
|
-
|
139
|
-
By default, `params_filters` is set to `[/authorization/i, /cookie/i,
|
140
|
-
/password/i, /secret/i]`, and for rails apps, imports all values from
|
141
|
-
`Rails.configuration.filter_parameters`.
|
142
|
-
|
143
|
-
**Note:** Assigning (`=`) instead of appending (`+=`) to the default value will
|
144
|
-
remove the default protections.
|
145
|
-
|
146
|
-
<!-- Custom anchor for linking from alerts -->
|
147
|
-
<div id="set-project-root"></div>
|
148
|
-
### `project_root`
|
149
|
-
|
150
|
-
We mark stacktrace lines as `inProject` if they come from files inside your
|
151
|
-
`project_root`. In rails apps this value is automatically set to `RAILS_ROOT`,
|
152
|
-
otherwise you should set it manually:
|
153
|
-
|
154
|
-
```ruby
|
155
|
-
config.project_root = "/var/www/myproject"
|
156
|
-
```
|
157
|
-
|
158
|
-
### `proxy_host`
|
159
|
-
|
160
|
-
Sets the address of the HTTP proxy that should be used for requests to bugsnag.
|
161
|
-
|
162
|
-
```ruby
|
163
|
-
config.proxy_host = "10.10.10.10"
|
164
|
-
```
|
165
|
-
|
166
|
-
### `proxy_password`
|
167
|
-
|
168
|
-
Sets the password for the user that should be used to send requests to the HTTP proxy for requests to bugsnag.
|
169
|
-
|
170
|
-
```ruby
|
171
|
-
config.proxy_password = "proxy_secret_password_here"
|
172
|
-
```
|
173
|
-
|
174
|
-
### `proxy_port`
|
175
|
-
|
176
|
-
Sets the port of the HTTP proxy that should be used for requests to bugsnag.
|
177
|
-
|
178
|
-
```ruby
|
179
|
-
config.proxy_port = 1089
|
180
|
-
```
|
181
|
-
|
182
|
-
### `proxy_user`
|
183
|
-
|
184
|
-
Sets the user that should be used to send requests to the HTTP proxy for requests to bugsnag.
|
185
|
-
|
186
|
-
```ruby
|
187
|
-
config.proxy_user = "proxy_user"
|
188
|
-
```
|
189
|
-
|
190
|
-
### `release_stage`
|
191
|
-
|
192
|
-
If you would like to distinguish between errors that happen in different
|
193
|
-
stages of the application release process (development, production, etc)
|
194
|
-
you can set the `release_stage` that is reported to Bugsnag.
|
195
|
-
|
196
|
-
```ruby
|
197
|
-
config.release_stage = "development"
|
198
|
-
```
|
199
|
-
|
200
|
-
In rails apps this value is automatically set from `RAILS_ENV`, and in rack
|
201
|
-
apps it is automatically set to `RACK_ENV`. Otherwise the default is
|
202
|
-
"production".
|
203
|
-
|
204
|
-
### `send_environment`
|
205
|
-
|
206
|
-
Bugsnag can transmit your rack environment to help diagnose issues. This environment
|
207
|
-
can sometimes contain private information so Bugsnag does not transmit by default. To
|
208
|
-
send your rack environment, set the `send_environment` option to `true`.
|
209
|
-
|
210
|
-
```ruby
|
211
|
-
config.send_environment = true
|
212
|
-
```
|
213
|
-
|
214
|
-
### `send_code`
|
215
|
-
|
216
|
-
Bugsnag automatically sends a small snippet of the code that crashed to help you diagnose
|
217
|
-
even faster from within your dashboard. If you don't want to send this snippet you can
|
218
|
-
set the `send_code` option to `false`.
|
219
|
-
|
220
|
-
```ruby
|
221
|
-
config.send_code = false
|
222
|
-
```
|
223
|
-
|
224
|
-
### `timeout`
|
225
|
-
By default the timeout for posting errors to Bugsnag is 15 seconds, to change this
|
226
|
-
you can set the `timeout`:
|
227
|
-
|
228
|
-
```ruby
|
229
|
-
config.timeout = 10
|
230
|
-
```
|
231
|
-
|
232
|
-
### `use_ssl`
|
233
|
-
|
234
|
-
Enforces all communication with bugsnag.com be made via ssl. You can turn
|
235
|
-
this off if necessary.
|
236
|
-
|
237
|
-
```ruby
|
238
|
-
config.use_ssl = false
|
239
|
-
```
|
240
|
-
|
241
|
-
By default, `use_ssl` is set to true.
|
242
|
-
|
@@ -1,269 +0,0 @@
|
|
1
|
-
# `bugsnag-ruby` Notification Options
|
2
|
-
|
3
|
-
It is often useful to send additional meta-data about your app, such as
|
4
|
-
information about the currently logged in user, along with any
|
5
|
-
exceptions, to help debug problems.
|
6
|
-
|
7
|
-
* [Notification Object](#notification-object)
|
8
|
-
- [Instance Methods](#instance-methods)
|
9
|
-
- [`Bugsnag::MetaData` Exception Mixin](#exception-mixin)
|
10
|
-
* [Handled Notification Options](#handled-notification-options)
|
11
|
-
* [Framework-specific Configuration](#framework-specific-configuration)
|
12
|
-
- [Rails Apps](#rails-apps)
|
13
|
-
- [Rails API Apps](#rails-api-apps)
|
14
|
-
- [Other Ruby Apps](#other-ruby-apps)
|
15
|
-
|
16
|
-
## Notification Object
|
17
|
-
|
18
|
-
The notification object is passed to all [before bugsnag notify](#framework-specific-configuration)
|
19
|
-
callbacks and is used to manipulate the error report before it is transmitted.
|
20
|
-
|
21
|
-
### Instance Methods
|
22
|
-
|
23
|
-
#### `add_tab`
|
24
|
-
|
25
|
-
Call add_tab on a notification object to add a tab to the error report so that
|
26
|
-
it would appear on your dashboard.
|
27
|
-
|
28
|
-
```ruby
|
29
|
-
notif.add_tab(:user_info, {
|
30
|
-
name: current_user.name
|
31
|
-
})
|
32
|
-
```
|
33
|
-
|
34
|
-
The first parameter is the tab name that will appear in the error report and the
|
35
|
-
second is the key, value list that will be displayed in the tab.
|
36
|
-
|
37
|
-
#### `remove_tab`
|
38
|
-
|
39
|
-
Removes a tab completely from the error report
|
40
|
-
|
41
|
-
```ruby
|
42
|
-
notif.remove_tab(:request)
|
43
|
-
```
|
44
|
-
|
45
|
-
#### `ignore!`
|
46
|
-
|
47
|
-
Calling ignore! on a notification object will cause the notification to not be
|
48
|
-
sent to bugsnag. This means that you can choose dynamically not to send an error
|
49
|
-
depending on application state or the error itself.
|
50
|
-
|
51
|
-
```ruby
|
52
|
-
notif.ignore! if foo == 'bar'
|
53
|
-
```
|
54
|
-
|
55
|
-
#### `grouping_hash`
|
56
|
-
|
57
|
-
Sets the grouping hash of the error report. All errors with the same grouping
|
58
|
-
hash are grouped together. This is an advanced usage of the library and
|
59
|
-
mis-using it will cause your errors not to group properly in your dashboard.
|
60
|
-
|
61
|
-
```ruby
|
62
|
-
notif.grouping_hash = "#{exception.message}#{exception.class}"
|
63
|
-
```
|
64
|
-
|
65
|
-
#### `severity`
|
66
|
-
|
67
|
-
Set the severity of the error. Severity can be `error`, `warning` or `info`.
|
68
|
-
|
69
|
-
```ruby
|
70
|
-
notif.severity = "error"
|
71
|
-
```
|
72
|
-
|
73
|
-
#### `context`
|
74
|
-
|
75
|
-
Set the context of the error report. This is notionally the location of the
|
76
|
-
error and should be populated automatically. Context is displayed in the
|
77
|
-
dashboard prominently.
|
78
|
-
|
79
|
-
```ruby
|
80
|
-
notif.context = "billing"
|
81
|
-
```
|
82
|
-
|
83
|
-
#### `user`
|
84
|
-
|
85
|
-
You can set or read the user with the user property of the notification. The
|
86
|
-
user will be a hash of `email`, `id` and `name`.
|
87
|
-
|
88
|
-
```ruby
|
89
|
-
notif.user = {
|
90
|
-
id: current_user.id,
|
91
|
-
email: current_user.email,
|
92
|
-
name: current_user.name
|
93
|
-
}
|
94
|
-
```
|
95
|
-
|
96
|
-
#### `exceptions`
|
97
|
-
|
98
|
-
Allows you to read the exceptions that will be combined into the report.
|
99
|
-
|
100
|
-
```ruby
|
101
|
-
puts "#{notif.exceptions.first.message} found!"
|
102
|
-
```
|
103
|
-
|
104
|
-
#### `meta_data`
|
105
|
-
|
106
|
-
Provides access to the meta_data in the error report.
|
107
|
-
|
108
|
-
```ruby
|
109
|
-
notif.ignore! if notif.meta_data[:sidekiq][:retry_count] > 2
|
110
|
-
```
|
111
|
-
|
112
|
-
### Exception Mixin
|
113
|
-
|
114
|
-
If you include the `Bugsnag::MetaData` module into your own exceptions, you can
|
115
|
-
associate meta data with a particular exception.
|
116
|
-
|
117
|
-
```ruby
|
118
|
-
class MyCustomException < Exception
|
119
|
-
include Bugsnag::MetaData
|
120
|
-
end
|
121
|
-
|
122
|
-
exception = MyCustomException.new("It broke!")
|
123
|
-
exception.bugsnag_meta_data = {
|
124
|
-
:user_info => {
|
125
|
-
name: current_user.name
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
raise exception
|
130
|
-
```
|
131
|
-
|
132
|
-
## Handled Notification Options
|
133
|
-
|
134
|
-
Non-fatal exception notifications can send additional metadata in when being
|
135
|
-
sent via `Bugsnag.notify` including setting the severity and custom data.
|
136
|
-
|
137
|
-
#### Severity
|
138
|
-
|
139
|
-
You can set the severity of an error in Bugsnag by including the severity option when
|
140
|
-
notifying bugsnag of the error,
|
141
|
-
|
142
|
-
```ruby
|
143
|
-
Bugsnag.notify(RuntimeError.new("Something broke"), {
|
144
|
-
:severity => "error",
|
145
|
-
})
|
146
|
-
```
|
147
|
-
|
148
|
-
Valid severities are `error`, `warning` and `info`.
|
149
|
-
|
150
|
-
Severity is displayed in the dashboard and can be used to filter the error list.
|
151
|
-
By default all crashes (or unhandled exceptions) are set to `error` and all
|
152
|
-
`Bugsnag.notify` calls default to `warning`.
|
153
|
-
|
154
|
-
#### Multiple projects
|
155
|
-
|
156
|
-
If you want to divide errors into multiple Bugsnag projects, you can specify the API key as a parameter to `Bugsnag.notify`:
|
157
|
-
|
158
|
-
```ruby
|
159
|
-
rescue => e
|
160
|
-
Bugsnag.notify e, api_key: "your-api-key-here"
|
161
|
-
end
|
162
|
-
```
|
163
|
-
|
164
|
-
#### Custom Metadata
|
165
|
-
|
166
|
-
You can also send additional meta-data with your exception:
|
167
|
-
|
168
|
-
```ruby
|
169
|
-
Bugsnag.notify(RuntimeError.new("Something broke"), {
|
170
|
-
:user => {
|
171
|
-
:username => "bob-hoskins",
|
172
|
-
:registered_user => true
|
173
|
-
}
|
174
|
-
})
|
175
|
-
```
|
176
|
-
|
177
|
-
#### Custom Grouping via `grouping_hash`
|
178
|
-
|
179
|
-
If you want to override Bugsnag's grouping algorithm, you can specify a grouping hash key as a parameter to `Bugsnag.notify`:
|
180
|
-
|
181
|
-
```ruby
|
182
|
-
rescue => e
|
183
|
-
Bugsnag.notify e, grouping_hash: "this-is-my-grouping-hash"
|
184
|
-
end
|
185
|
-
```
|
186
|
-
|
187
|
-
All errors with the same groupingHash will be grouped together within the bugsnag dashboard.
|
188
|
-
|
189
|
-
## Framework-specific Configuration
|
190
|
-
|
191
|
-
### Rails Apps
|
192
|
-
|
193
|
-
By default Bugsnag includes some information automatically. For example, we
|
194
|
-
send all the HTTP headers for requests. Additionally if you're using Warden or
|
195
|
-
Devise, the id, name and email of the current user are sent.
|
196
|
-
|
197
|
-
To send additional information, in any rails controller you can define a
|
198
|
-
`before_bugsnag_notify` callback, which allows you to add this additional data
|
199
|
-
by calling `add_tab` on the exception notification object. Please see the
|
200
|
-
[Notification Object](#notification-object) for details on the notification
|
201
|
-
parameter.
|
202
|
-
|
203
|
-
```ruby
|
204
|
-
class MyController < ApplicationController
|
205
|
-
# Define the filter
|
206
|
-
before_bugsnag_notify :add_user_info_to_bugsnag
|
207
|
-
|
208
|
-
# Your controller code here
|
209
|
-
|
210
|
-
private
|
211
|
-
def add_user_info_to_bugsnag(notif)
|
212
|
-
# Set the user that this bug affected
|
213
|
-
# Email, name and id are searchable on bugsnag.com
|
214
|
-
notif.user = {
|
215
|
-
email: current_user.email,
|
216
|
-
name: current_user.name,
|
217
|
-
id: current_user.id
|
218
|
-
}
|
219
|
-
|
220
|
-
# Add some app-specific data which will be displayed on a custom
|
221
|
-
# "Diagnostics" tab on each error page on bugsnag.com
|
222
|
-
notif.add_tab(:diagnostics, {
|
223
|
-
product: current_product.name
|
224
|
-
})
|
225
|
-
end
|
226
|
-
end
|
227
|
-
```
|
228
|
-
|
229
|
-
### Rails API Apps
|
230
|
-
|
231
|
-
If you are building an API using the
|
232
|
-
[rails-api](https://github.com/rails-api/rails-api) gem, your controllers will
|
233
|
-
inherit from `ActionController::API` instead of `ActionController::Base`.
|
234
|
-
|
235
|
-
In this case, the `before_bugsnag_notify` filter will not be automatically
|
236
|
-
available in your controllers. In order to use it, you will need to include
|
237
|
-
the module `Bugsnag::Rails::ControllerMethods`.
|
238
|
-
|
239
|
-
```ruby
|
240
|
-
class ApplicationController < ActionController::API
|
241
|
-
|
242
|
-
# Include module which defines the before_bugsnag_notify filter
|
243
|
-
include Bugsnag::Rails::ControllerMethods
|
244
|
-
|
245
|
-
# Other code here
|
246
|
-
end
|
247
|
-
```
|
248
|
-
|
249
|
-
### Other Ruby Apps
|
250
|
-
|
251
|
-
In other ruby apps, you can provide lambda functions to execute before any
|
252
|
-
`Bugsnag.notify` calls as follows. Don't forget to clear the callbacks at the
|
253
|
-
end of each request or session. In Rack applications like Sinatra, this is
|
254
|
-
automatically done for you.
|
255
|
-
|
256
|
-
```ruby
|
257
|
-
# Set a before notify callback
|
258
|
-
Bugsnag.before_notify_callbacks << lambda {|notif|
|
259
|
-
notif.add_tab(:user_info, {
|
260
|
-
name: current_user.name
|
261
|
-
})
|
262
|
-
}
|
263
|
-
|
264
|
-
# Your app code here
|
265
|
-
|
266
|
-
# Clear the callbacks
|
267
|
-
Bugsnag.before_notify_callbacks.clear
|
268
|
-
```
|
269
|
-
|
data/docs/README.md
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# `bugsnag-ruby` Usage and Configuration
|
2
|
-
|
3
|
-
## [Configuration](Configuration.md)
|
4
|
-
|
5
|
-
Bugsnag includes several configuration for better compatibility with your
|
6
|
-
project and network settings.
|
7
|
-
|
8
|
-
## [Notification Options](Notification Options.md)
|
9
|
-
|
10
|
-
It is often useful to send additional metadata about your app, such as
|
11
|
-
information about the currently logged in user, along with any exceptions, to
|
12
|
-
help debug problems. This document lists possible per-notification options as
|
13
|
-
well as additional configuration available for different project types,
|
14
|
-
including Rails, Rails API, and other frameworks.
|