exceptions 0.0.10 → 0.1.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/lib/exceptions.rb +1 -7
- data/lib/exceptions/backend.rb +0 -7
- data/lib/exceptions/backends/context.rb +27 -0
- data/lib/exceptions/backends/honeybadger.rb +11 -8
- data/lib/exceptions/backends/log_result.rb +0 -6
- data/lib/exceptions/version.rb +1 -1
- data/lib/rack/exceptions.rb +1 -1
- data/spec/exceptions/backends/context_spec.rb +16 -0
- metadata +19 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32152614d262fdc05078c5bd2d32c7275b08bb8a
|
4
|
+
data.tar.gz: c222e2cb33d29eb56ef99ea91cbe42ee39fcc8fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3daf06f4ff6e71d71d2611ebbbc446f913fce2e27fa1d164387a171425e5955eac66424f82e5a382c1ffa624eaa2a2bb0419dea62aa99013fba592ea46c55d7
|
7
|
+
data.tar.gz: 8c69200af84147b81ca52041fd9592c8346f025ed79c2de487161730361d7cee04391e8ecdb122f3010740451ab688d852cacc2e1434f7aa906f52d0b4c438ef
|
data/lib/exceptions.rb
CHANGED
@@ -13,6 +13,7 @@ module Exceptions
|
|
13
13
|
autoload :Logger, 'exceptions/backends/logger'
|
14
14
|
autoload :LogResult, 'exceptions/backends/log_result'
|
15
15
|
autoload :Honeybadger, 'exceptions/backends/honeybadger'
|
16
|
+
autoload :Context, 'exceptions/backends/context'
|
16
17
|
end
|
17
18
|
|
18
19
|
class << self
|
@@ -40,13 +41,6 @@ module Exceptions
|
|
40
41
|
backend.clear_context
|
41
42
|
end
|
42
43
|
|
43
|
-
# Public: Notify a rack exception.
|
44
|
-
#
|
45
|
-
# Returns a Result object.
|
46
|
-
def rack_exception(exception, env)
|
47
|
-
backend.rack_exception exception, env
|
48
|
-
end
|
49
|
-
|
50
44
|
# Public: The configuration object.
|
51
45
|
#
|
52
46
|
# Returns a Configuration instance.
|
data/lib/exceptions/backend.rb
CHANGED
@@ -28,12 +28,5 @@ module Exceptions
|
|
28
28
|
# Returns nothing.
|
29
29
|
def clear_context
|
30
30
|
end
|
31
|
-
|
32
|
-
# Public: Called by the Rack middleware when an exception is raised.
|
33
|
-
#
|
34
|
-
# Returns and object satisfying the Result interface.
|
35
|
-
def rack_exception(exception, env)
|
36
|
-
notify(exception)
|
37
|
-
end
|
38
31
|
end
|
39
32
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Exceptions
|
2
|
+
module Backends
|
3
|
+
# Public: Context is a middleware that will add the given context options
|
4
|
+
# whenever an exception is reported.
|
5
|
+
class Context < Backend
|
6
|
+
attr_reader :backend, :extra
|
7
|
+
|
8
|
+
def initialize(backend, context = {})
|
9
|
+
@backend = backend
|
10
|
+
@extra = context
|
11
|
+
end
|
12
|
+
|
13
|
+
def notify(exception, *args)
|
14
|
+
backend.context extra
|
15
|
+
backend.notify(exception, *args)
|
16
|
+
end
|
17
|
+
|
18
|
+
def context(*args)
|
19
|
+
backend.context(*args)
|
20
|
+
end
|
21
|
+
|
22
|
+
def clear_context(*args)
|
23
|
+
backend.clear_context(*args)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -12,6 +12,7 @@ module Exceptions
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def notify(exception, options = {})
|
15
|
+
return if options[:rack_env] && rack_ignore?(options[:rack_env])
|
15
16
|
defaults = { backtrace: caller.drop(1) }
|
16
17
|
if id = honeybadger.notify_or_ignore(exception, defaults.merge(options))
|
17
18
|
Result.new id
|
@@ -28,19 +29,21 @@ module Exceptions
|
|
28
29
|
honeybadger.clear!
|
29
30
|
end
|
30
31
|
|
31
|
-
def rack_exception(exception, env)
|
32
|
-
notify(exception, rack_env: env) unless honeybadger.
|
33
|
-
configuration.
|
34
|
-
ignore_user_agent.
|
35
|
-
flatten.
|
36
|
-
any? { |ua| ua === env['HTTP_USER_AGENT'] }
|
37
|
-
end
|
38
|
-
|
39
32
|
class Result < ::Exceptions::Result
|
40
33
|
def url
|
41
34
|
"https://www.honeybadger.io/notice/#{id}"
|
42
35
|
end
|
43
36
|
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def rack_ignore?(env)
|
41
|
+
return honeybadger.
|
42
|
+
configuration.
|
43
|
+
ignore_user_agent.
|
44
|
+
flatten.
|
45
|
+
any? { |ua| ua === env['HTTP_USER_AGENT'] }
|
46
|
+
end
|
44
47
|
end
|
45
48
|
end
|
46
49
|
end
|
data/lib/exceptions/version.rb
CHANGED
data/lib/rack/exceptions.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Exceptions::Backends::Context do
|
4
|
+
let(:backend) { double(Exceptions::Backend) }
|
5
|
+
let(:middleware) do
|
6
|
+
described_class.new backend, foo: 'bar'
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#notify' do
|
10
|
+
it 'sets the context' do
|
11
|
+
expect(backend).to receive(:context).with(foo: 'bar')
|
12
|
+
expect(backend).to receive(:notify).with(boom)
|
13
|
+
middleware.notify(boom)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exceptions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric J. Holmes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 3.1.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 3.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: honeybadger
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 1.9.5
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.9.5
|
69
69
|
description: Exceptions is a Ruby gem for exception tracking.
|
@@ -73,9 +73,9 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
-
- .gitignore
|
77
|
-
- .rspec
|
78
|
-
- .travis.yml
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
78
|
+
- ".travis.yml"
|
79
79
|
- Gemfile
|
80
80
|
- LICENSE
|
81
81
|
- README.md
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- exceptions.gemspec
|
84
84
|
- lib/exceptions.rb
|
85
85
|
- lib/exceptions/backend.rb
|
86
|
+
- lib/exceptions/backends/context.rb
|
86
87
|
- lib/exceptions/backends/honeybadger.rb
|
87
88
|
- lib/exceptions/backends/log_result.rb
|
88
89
|
- lib/exceptions/backends/logger.rb
|
@@ -93,6 +94,7 @@ files:
|
|
93
94
|
- lib/exceptions/result.rb
|
94
95
|
- lib/exceptions/version.rb
|
95
96
|
- lib/rack/exceptions.rb
|
97
|
+
- spec/exceptions/backends/context_spec.rb
|
96
98
|
- spec/exceptions/backends/honeybadger/integration_spec.rb
|
97
99
|
- spec/exceptions/backends/honeybadger_spec.rb
|
98
100
|
- spec/exceptions/backends/log_result_spec.rb
|
@@ -111,21 +113,22 @@ require_paths:
|
|
111
113
|
- lib
|
112
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
115
|
requirements:
|
114
|
-
- -
|
116
|
+
- - ">="
|
115
117
|
- !ruby/object:Gem::Version
|
116
118
|
version: '0'
|
117
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
120
|
requirements:
|
119
|
-
- -
|
121
|
+
- - ">="
|
120
122
|
- !ruby/object:Gem::Version
|
121
123
|
version: '0'
|
122
124
|
requirements: []
|
123
125
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.4.5
|
125
127
|
signing_key:
|
126
128
|
specification_version: 4
|
127
129
|
summary: Exceptions is a Ruby gem for exception tracking.
|
128
130
|
test_files:
|
131
|
+
- spec/exceptions/backends/context_spec.rb
|
129
132
|
- spec/exceptions/backends/honeybadger/integration_spec.rb
|
130
133
|
- spec/exceptions/backends/honeybadger_spec.rb
|
131
134
|
- spec/exceptions/backends/log_result_spec.rb
|