bugsnag 1.2.7 → 1.2.8
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.
- data/CHANGELOG.md +76 -0
- data/VERSION +1 -1
- data/bugsnag.gemspec +3 -2
- data/lib/bugsnag/middleware_stack.rb +13 -4
- data/spec/middleware_spec.rb +14 -0
- data/spec/notification_spec.rb +9 -12
- metadata +5 -4
data/CHANGELOG.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
Changelog
|
2
|
+
=========
|
3
|
+
|
4
|
+
1.2.8
|
5
|
+
-----
|
6
|
+
- Added `disable` method to Bugsnag middleware, allows you to force-disable
|
7
|
+
built-in Bugsnag middleware.
|
8
|
+
|
9
|
+
1.2.7
|
10
|
+
-----
|
11
|
+
- Protect against rare exception-unwrapping infinite loop
|
12
|
+
(only in some exceptions using the `original_exception` pattern)
|
13
|
+
|
14
|
+
1.2.6
|
15
|
+
-----
|
16
|
+
- Fix for rails 2 request data extraction
|
17
|
+
- Deploy environment customization support (thanks coop)
|
18
|
+
- Ensure Bugsnag rails 3 middleware runs before initializers
|
19
|
+
|
20
|
+
1.2.5
|
21
|
+
-----
|
22
|
+
- Show a warning if no release_stage is set when delivering exceptions
|
23
|
+
- Require resque plugin in a safer way
|
24
|
+
|
25
|
+
1.2.4
|
26
|
+
-----
|
27
|
+
- Automatically set the release_stage in a safer way on rack/rails
|
28
|
+
|
29
|
+
1.2.3
|
30
|
+
-----
|
31
|
+
- Re-add support for sending bugsnag notifications via resque
|
32
|
+
|
33
|
+
1.2.2
|
34
|
+
-----
|
35
|
+
- Add rspec tests for rack middleware
|
36
|
+
|
37
|
+
1.2.1
|
38
|
+
-----
|
39
|
+
- Fix a bug where before/after hooks were not being fired
|
40
|
+
|
41
|
+
1.2.0
|
42
|
+
-----
|
43
|
+
- Added Bugsnag Middleware and callback, easier ways to add custom data to
|
44
|
+
your exceptions
|
45
|
+
- Added automatic Sidekiq integration
|
46
|
+
- Added automatic Devise integration
|
47
|
+
- Comprehensive rspec tests
|
48
|
+
|
49
|
+
1.1.5
|
50
|
+
-----
|
51
|
+
- Fix minor internal version number parsing bug
|
52
|
+
|
53
|
+
1.1.4
|
54
|
+
-----
|
55
|
+
- Move Bugsnag rack middleware later in the middleware stack, fixes
|
56
|
+
issue where development exception may not have been delivered
|
57
|
+
|
58
|
+
1.1.3
|
59
|
+
-----
|
60
|
+
- Fix multi_json conflict with rails 3.1
|
61
|
+
- Make bugsnag_request_data public for easier EventMachine integration
|
62
|
+
(thanks fblee)
|
63
|
+
|
64
|
+
1.1.2
|
65
|
+
-----
|
66
|
+
- Fix multi_json gem dependency conflicts
|
67
|
+
|
68
|
+
1.1.1
|
69
|
+
-----
|
70
|
+
- Capistrano deploy tracking support
|
71
|
+
- More reliable project_root detection for non-rails rack apps
|
72
|
+
- Support for sending test exceptions from rake (`rake bugsnag:test_exception`)
|
73
|
+
|
74
|
+
1.1.0
|
75
|
+
-----
|
76
|
+
- First public release
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.8
|
data/bugsnag.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "bugsnag"
|
8
|
-
s.version = "1.2.
|
8
|
+
s.version = "1.2.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["James Smith"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-01-08"
|
13
13
|
s.description = "Ruby notifier for bugsnag.com"
|
14
14
|
s.email = "james@bugsnag.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
".document",
|
21
21
|
".rspec",
|
22
22
|
".travis.yml",
|
23
|
+
"CHANGELOG.md",
|
23
24
|
"Gemfile",
|
24
25
|
"Gemfile.lock",
|
25
26
|
"LICENSE.txt",
|
@@ -2,17 +2,18 @@ module Bugsnag
|
|
2
2
|
class MiddlewareStack
|
3
3
|
def initialize
|
4
4
|
@middlewares = []
|
5
|
+
@disabled_middleware = []
|
5
6
|
end
|
6
7
|
|
7
8
|
def use(new_middleware)
|
8
|
-
|
9
|
-
end
|
9
|
+
return if @disabled_middleware.include?(new_middleware)
|
10
10
|
|
11
|
-
|
12
|
-
@middlewares.delete(middleware)
|
11
|
+
@middlewares << new_middleware
|
13
12
|
end
|
14
13
|
|
15
14
|
def insert_after(after, new_middleware)
|
15
|
+
return if @disabled_middleware.include?(new_middleware)
|
16
|
+
|
16
17
|
index = @middlewares.rindex(after)
|
17
18
|
if index.nil?
|
18
19
|
@middlewares << new_middleware
|
@@ -22,10 +23,18 @@ module Bugsnag
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def insert_before(before, new_middleware)
|
26
|
+
return if @disabled_middleware.include?(new_middleware)
|
27
|
+
|
25
28
|
index = @middlewares.index(before) || @middlewares.length
|
26
29
|
@middlewares.insert index, new_middleware
|
27
30
|
end
|
28
31
|
|
32
|
+
def disable(*middlewares)
|
33
|
+
@disabled_middleware += middlewares
|
34
|
+
|
35
|
+
@middlewares.delete_if {|m| @disabled_middleware.include?(m)}
|
36
|
+
end
|
37
|
+
|
29
38
|
# This allows people to proxy methods to the array if they want to do more complex stuff
|
30
39
|
def method_missing(method, *args, &block)
|
31
40
|
@middlewares.send(method, *args, &block)
|
data/spec/middleware_spec.rb
CHANGED
@@ -87,4 +87,18 @@ describe Bugsnag::MiddlewareStack do
|
|
87
87
|
|
88
88
|
callback_run_count.should be == 1
|
89
89
|
end
|
90
|
+
|
91
|
+
it "should not execute disabled bugsnag middleware" do
|
92
|
+
callback_run_count = 0
|
93
|
+
Bugsnag.configure do |config|
|
94
|
+
config.middleware.disable(Bugsnag::Middleware::Callbacks)
|
95
|
+
end
|
96
|
+
|
97
|
+
Bugsnag.before_notify_callbacks << lambda {|notif|
|
98
|
+
callback_run_count += 1
|
99
|
+
}
|
100
|
+
|
101
|
+
Bugsnag.notify(BugsnagTestException.new("It crashed"))
|
102
|
+
callback_run_count.should be == 0
|
103
|
+
end
|
90
104
|
end
|
data/spec/notification_spec.rb
CHANGED
@@ -2,14 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'securerandom'
|
3
3
|
|
4
4
|
module ActiveRecord; class RecordNotFound < RuntimeError; end; end
|
5
|
-
|
6
|
-
class RecursiveException < StandardError
|
7
|
-
attr_accessor :original_exception
|
8
|
-
def initialize(*args)
|
9
|
-
self.original_exception = self
|
10
|
-
super(message)
|
11
|
-
end
|
12
|
-
end
|
5
|
+
class NestedException < StandardError; attr_accessor :original_exception; end
|
13
6
|
|
14
7
|
describe Bugsnag::Notification do
|
15
8
|
it "should contain an api_key if one is set" do
|
@@ -301,10 +294,14 @@ describe Bugsnag::Notification do
|
|
301
294
|
|
302
295
|
it "should not unwrap the same exception twice" do
|
303
296
|
Bugsnag::Notification.should_receive(:deliver_exception_payload) do |endpoint, payload|
|
304
|
-
|
297
|
+
event = get_event_from_payload(payload)
|
298
|
+
event[:exceptions].should have(1).items
|
305
299
|
end
|
306
300
|
|
307
|
-
|
301
|
+
ex = NestedException.new("Self-referential exception")
|
302
|
+
ex.original_exception = ex
|
303
|
+
|
304
|
+
Bugsnag.notify_or_ignore(ex)
|
308
305
|
end
|
309
306
|
|
310
307
|
it "should not unwrap more than 5 exceptions" do
|
@@ -313,9 +310,9 @@ describe Bugsnag::Notification do
|
|
313
310
|
event[:exceptions].should have(5).items
|
314
311
|
end
|
315
312
|
|
316
|
-
first_ex = ex =
|
313
|
+
first_ex = ex = NestedException.new("Deep exception")
|
317
314
|
10.times do |idx|
|
318
|
-
ex = ex.original_exception =
|
315
|
+
ex = ex.original_exception = NestedException.new("Deep exception #{idx}")
|
319
316
|
end
|
320
317
|
|
321
318
|
Bugsnag.notify_or_ignore(first_ex)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bugsnag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 8
|
10
|
+
version: 1.2.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- James Smith
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-01-08 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
requirement: &id001 !ruby/object:Gem::Requirement
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- .document
|
115
115
|
- .rspec
|
116
116
|
- .travis.yml
|
117
|
+
- CHANGELOG.md
|
117
118
|
- Gemfile
|
118
119
|
- Gemfile.lock
|
119
120
|
- LICENSE.txt
|