exceptions 0.0.10 → 0.1.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
  SHA1:
3
- metadata.gz: b4185a231138c29c90b691eff7cc08d4242afa51
4
- data.tar.gz: d1651725b49071006d7c0e815c2ab2baed52ab46
3
+ metadata.gz: 32152614d262fdc05078c5bd2d32c7275b08bb8a
4
+ data.tar.gz: c222e2cb33d29eb56ef99ea91cbe42ee39fcc8fe
5
5
  SHA512:
6
- metadata.gz: e1d68b63aac5e2f604f74ad3285f37e4775c456b3232d83857a981c83b56e354ee8c96c8ddc380fb523a6a952477a4df6dd81008df6468a9dfedb430454aaf33
7
- data.tar.gz: 65ff061af915bb17cf55b2b39dbbdc9da2be7723ad810367f394f632f01f8c5d817c3a574f45dccd261fd966b842abe284142dd049f97621550395782536c462
6
+ metadata.gz: d3daf06f4ff6e71d71d2611ebbbc446f913fce2e27fa1d164387a171425e5955eac66424f82e5a382c1ffa624eaa2a2bb0419dea62aa99013fba592ea46c55d7
7
+ data.tar.gz: 8c69200af84147b81ca52041fd9592c8346f025ed79c2de487161730361d7cee04391e8ecdb122f3010740451ab688d852cacc2e1434f7aa906f52d0b4c438ef
@@ -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.
@@ -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
@@ -18,12 +18,6 @@ module Exceptions
18
18
  end
19
19
  end
20
20
 
21
- def rack_exception(exception, env)
22
- backend.rack_exception(exception, env).tap do |result|
23
- log exception, result
24
- end
25
- end
26
-
27
21
  def context(*args)
28
22
  backend.context(*args)
29
23
  end
@@ -1,3 +1,3 @@
1
1
  module Exceptions
2
- VERSION = '0.0.10'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -9,7 +9,7 @@ module Rack
9
9
  begin
10
10
  response = @app.call(env)
11
11
  rescue Exception => e
12
- backend.rack_exception(e, env)
12
+ backend.notify(e, rack_env: env)
13
13
  raise
14
14
  end
15
15
 
@@ -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.10
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: 2014-09-30 00:00:00.000000000 Z
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.0.14
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