execute_with_rescue_with_airbrake 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/Appraisals +3 -3
- data/CHANGELOG.md +3 -0
- data/README.md +28 -5
- data/Rakefile +1 -1
- data/execute_with_rescue_with_airbrake.gemspec +4 -3
- data/gemfiles/rails_3_2.gemfile +2 -2
- data/gemfiles/rails_4_0.gemfile +2 -2
- data/gemfiles/rails_4_1.gemfile +2 -2
- data/lib/execute_with_rescue_with_airbrake/version.rb +1 -1
- data/spec/execute_with_rescue/mixins/with_airbrake_spec.rb +22 -5
- data/spec/execute_with_rescue_with_airbrake/adapters/airbrake_adapter_spec.rb +9 -7
- data/spec/fixtures/test_service_classes.rb +17 -0
- data/spec/spec_helper.rb +1 -0
- metadata +32 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5d1379bd518fffaf16cac770009ce25a685495d
|
4
|
+
data.tar.gz: d92e9467ea3bd298841841669d1cd00aeb947c52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6d1ee7602c638f994973d5bbf475452390725e682223e5f8f4b9d09c5923d85c14d58d08b145c270929a0ccbd22dc6ff30b1a6f3a34d250d0b88c84655814b2
|
7
|
+
data.tar.gz: f4dad93c3d92a645088879894012544773b8b3c1660aeb762be35afeb8427cae5f2a42c18c6ee3f0517a1d9b5fb213baba0382af897d48a932f1ecf3300985f3
|
data/.travis.yml
CHANGED
data/Appraisals
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
appraise "rails-3-2" do
|
2
|
-
gem "activesupport", "3.2.
|
2
|
+
gem "activesupport", "3.2.18"
|
3
3
|
end
|
4
4
|
|
5
5
|
appraise "rails-4-0" do
|
6
|
-
gem "activesupport", "4.0.
|
6
|
+
gem "activesupport", "4.0.5"
|
7
7
|
end
|
8
8
|
|
9
9
|
appraise "rails-4-1" do
|
10
|
-
gem "activesupport", "4.1.
|
10
|
+
gem "activesupport", "4.1.1"
|
11
11
|
end
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
# ExecuteWithRescueWithAirbrake
|
2
2
|
|
3
|
-
TODO: Write a gem description
|
4
|
-
|
5
3
|
The Airbrake adapter plus mixin to be used with `execute_with_rescue`.
|
6
4
|
|
7
5
|
## Support
|
8
|
-
===========
|
9
6
|
Tested against:
|
10
7
|
- Active Support of version `3.2`, `4.0` and `4.1` (pre-3.2 got wrong dependency & I don't want to support)
|
11
8
|
- MRI `1.9.3`, `2.0.0`, `2.1.0`, `2.1.1`
|
@@ -32,8 +29,6 @@ Or install it yourself as:
|
|
32
29
|
|
33
30
|
## Usage
|
34
31
|
|
35
|
-
TODO: Write usage instructions here
|
36
|
-
|
37
32
|
Note: You must configurate `airbrake` first or you won't be able to send anything (I have to do the same in `spec_helper`)
|
38
33
|
|
39
34
|
### `include ExecuteWithRescue::Mixins::WithAirbrake`
|
@@ -71,6 +66,34 @@ class SomeServiceClass
|
|
71
66
|
end
|
72
67
|
```
|
73
68
|
|
69
|
+
If you have a custom error that generates error message from the argument, (and you don't want to duplicate how it generates the message)
|
70
|
+
You can do as the following:
|
71
|
+
```ruby
|
72
|
+
class SomeServiceClass
|
73
|
+
class CustomErrorWithMessage < StandardError
|
74
|
+
def self.new(thing)
|
75
|
+
msg = "#{thing.class} has error"
|
76
|
+
super(msg)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def perform
|
81
|
+
execute_with_rescue do
|
82
|
+
do_something
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def do_something
|
87
|
+
# If you cannot provide the argument for the exception at this point then I can't help you
|
88
|
+
# You should really use `begin...rescue...end` for such customization
|
89
|
+
set_default_airbrake_notice_error_class(CustomErrorWithMessage)
|
90
|
+
set_default_airbrake_notice_error_message(CustomErrorWithMessage.new(:foo).message)
|
91
|
+
|
92
|
+
raise StandardError
|
93
|
+
end
|
94
|
+
end
|
95
|
+
```
|
96
|
+
|
74
97
|
### `#notify_by_airbrake_or_raise`
|
75
98
|
**Private** method to be called automatically by `rescue_from StandardError` from the mixin.
|
76
99
|
Call this if you have some custom handling for some error classes
|
data/Rakefile
CHANGED
@@ -18,12 +18,13 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.add_dependency "execute_with_rescue", "~> 0.0", ">= 0.0.1"
|
21
|
-
spec.add_dependency "airbrake", "
|
21
|
+
spec.add_dependency "airbrake", ">= 3.1", "<= 5"
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.5"
|
24
24
|
spec.add_development_dependency "rake"
|
25
|
-
spec.add_development_dependency "appraisal", "
|
26
|
-
spec.add_development_dependency "rspec", "~>
|
25
|
+
spec.add_development_dependency "appraisal", "~> 1.0"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
spec.add_development_dependency "rspec-its", "~> 1.0"
|
27
28
|
spec.add_development_dependency "coveralls", ">= 0.7"
|
28
29
|
spec.add_development_dependency "gem-release", ">= 0.7"
|
29
30
|
|
data/gemfiles/rails_3_2.gemfile
CHANGED
data/gemfiles/rails_4_0.gemfile
CHANGED
data/gemfiles/rails_4_1.gemfile
CHANGED
@@ -13,9 +13,9 @@ describe ExecuteWithRescue::Mixins::WithAirbrake do
|
|
13
13
|
let!(:adapter_instance) { adapter_class.new }
|
14
14
|
before do
|
15
15
|
# Avoid Error
|
16
|
-
test_class_instance
|
17
|
-
.
|
18
|
-
|
16
|
+
allow(test_class_instance)
|
17
|
+
.to receive(:_execute_with_rescue_current_airbrake_adapter)
|
18
|
+
.and_return(adapter_instance)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -50,7 +50,9 @@ describe ExecuteWithRescue::Mixins::WithAirbrake do
|
|
50
50
|
describe 'delegation' do
|
51
51
|
include_context 'when airbrake adapter assumed exists'
|
52
52
|
|
53
|
-
before
|
53
|
+
before do
|
54
|
+
allow(adapter_instance).to receive(method_name)
|
55
|
+
end
|
54
56
|
|
55
57
|
let(:send_message) { test_class_instance.send(method_name) }
|
56
58
|
|
@@ -82,7 +84,7 @@ describe ExecuteWithRescue::Mixins::WithAirbrake do
|
|
82
84
|
describe 'execution' do
|
83
85
|
include_context 'when airbrake adapter assumed exists'
|
84
86
|
|
85
|
-
before { Airbrake.configuration.
|
87
|
+
before { allow(Airbrake.configuration).to receive(:public?) { true } }
|
86
88
|
|
87
89
|
describe 'when there is no error raised' do
|
88
90
|
specify do
|
@@ -122,6 +124,21 @@ describe ExecuteWithRescue::Mixins::WithAirbrake do
|
|
122
124
|
call_service
|
123
125
|
end
|
124
126
|
end
|
127
|
+
|
128
|
+
describe 'setting custom airbrake options with an error that requires argument on initialize' do
|
129
|
+
let(:test_class) { TestServiceWithAirbrakeWithCustomErrorAndMessage }
|
130
|
+
|
131
|
+
specify do
|
132
|
+
expect(Airbrake)
|
133
|
+
.to(receive(:notify_or_ignore)
|
134
|
+
.with(kind_of(StandardError), {
|
135
|
+
error_class: test_class::CustomErrorWithMessage,
|
136
|
+
error_message: "#{:foo.class} has error",
|
137
|
+
}))
|
138
|
+
|
139
|
+
call_service
|
140
|
+
end
|
141
|
+
end
|
125
142
|
end
|
126
143
|
end
|
127
144
|
end
|
@@ -14,7 +14,7 @@ describe ExecuteWithRescueWithAirbrake::Adapters::AirbrakeAdapter do
|
|
14
14
|
#before { }
|
15
15
|
|
16
16
|
context 'when exception should not be notified according to Airbrake' do
|
17
|
-
before { Airbrake.configuration.
|
17
|
+
before { allow(Airbrake.configuration).to receive(:public?) { false } }
|
18
18
|
|
19
19
|
it 're-raise the rescue error' do
|
20
20
|
expect { notify_or_raise }.to raise_error(exception_rescued.class,
|
@@ -22,7 +22,7 @@ describe ExecuteWithRescueWithAirbrake::Adapters::AirbrakeAdapter do
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
context 'when exception should be notified according to Airbrake' do
|
25
|
-
before { Airbrake.configuration.
|
25
|
+
before { allow(Airbrake.configuration).to receive(:public?) { true } }
|
26
26
|
|
27
27
|
it 'does not re-raise the rescued error' do
|
28
28
|
expect { notify_or_raise }.to_not raise_error
|
@@ -30,12 +30,14 @@ describe ExecuteWithRescueWithAirbrake::Adapters::AirbrakeAdapter do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
context 'assuming Airbrake says it error should be notified' do
|
33
|
-
before { Airbrake.configuration.
|
33
|
+
before { allow(Airbrake.configuration).to receive(:public?) { true } }
|
34
34
|
|
35
35
|
it 'calls Airbrake.notify_or_ignore' do
|
36
|
-
Airbrake.
|
36
|
+
expect(Airbrake).to receive(:notify_or_ignore)
|
37
37
|
|
38
38
|
notify_or_raise
|
39
|
+
|
40
|
+
# expect(Airbrake).to have_received(:notify_or_ignore)
|
39
41
|
end
|
40
42
|
|
41
43
|
|
@@ -49,7 +51,7 @@ describe ExecuteWithRescueWithAirbrake::Adapters::AirbrakeAdapter do
|
|
49
51
|
|
50
52
|
before do
|
51
53
|
# Return the options only
|
52
|
-
Airbrake.
|
54
|
+
allow(Airbrake).to receive(:notify_or_ignore) {|*args| args.last }
|
53
55
|
end
|
54
56
|
let(:options_hash) { notify_or_raise }
|
55
57
|
subject { options_hash }
|
@@ -81,7 +83,7 @@ describe ExecuteWithRescueWithAirbrake::Adapters::AirbrakeAdapter do
|
|
81
83
|
|
82
84
|
before do
|
83
85
|
# Return the options only
|
84
|
-
Airbrake.
|
86
|
+
allow(Airbrake).to receive(:notify_or_ignore) {|*args| args.last }
|
85
87
|
end
|
86
88
|
let(:options_hash) { notify_or_raise }
|
87
89
|
subject { options_hash }
|
@@ -114,7 +116,7 @@ describe ExecuteWithRescueWithAirbrake::Adapters::AirbrakeAdapter do
|
|
114
116
|
|
115
117
|
before do
|
116
118
|
# Return the options only
|
117
|
-
Airbrake.
|
119
|
+
allow(Airbrake).to receive(:notify_or_ignore) {|*args| args.last }
|
118
120
|
end
|
119
121
|
let(:options_hash) { notify_or_raise }
|
120
122
|
let(:parameters_hash) { options_hash[option_key] }
|
@@ -33,6 +33,23 @@ class TestServiceWithAirbrakeWithErrorAndAirbrakeOption <
|
|
33
33
|
super
|
34
34
|
end
|
35
35
|
end
|
36
|
+
class TestServiceWithAirbrakeWithCustomErrorAndMessage <
|
37
|
+
TestServiceWithAirbrakeWithErrorAndAirbrakeOption
|
38
|
+
|
39
|
+
class CustomErrorWithMessage < StandardError
|
40
|
+
def self.new(thing)
|
41
|
+
msg = "#{thing.class} has error"
|
42
|
+
super(msg)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def do_something
|
47
|
+
set_default_airbrake_notice_error_class(CustomErrorWithMessage)
|
48
|
+
set_default_airbrake_notice_error_message(CustomErrorWithMessage.new(:foo).message)
|
49
|
+
|
50
|
+
raise StandardError
|
51
|
+
end
|
52
|
+
end
|
36
53
|
|
37
54
|
class TestServiceWithAirbrakeWithExecuteWithRescueCall <
|
38
55
|
TestServiceWithAirbrake
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: execute_with_rescue_with_airbrake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- PikachuEXE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03
|
11
|
+
date: 2014-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: execute_with_rescue
|
@@ -34,16 +34,22 @@ dependencies:
|
|
34
34
|
name: airbrake
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- -
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.1'
|
40
|
+
- - <=
|
38
41
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
42
|
+
version: '5'
|
40
43
|
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
|
-
- -
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '3.1'
|
50
|
+
- - <=
|
45
51
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
52
|
+
version: '5'
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
54
|
name: bundler
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,30 +82,44 @@ dependencies:
|
|
76
82
|
name: appraisal
|
77
83
|
requirement: !ruby/object:Gem::Requirement
|
78
84
|
requirements:
|
79
|
-
- -
|
85
|
+
- - ~>
|
80
86
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0
|
87
|
+
version: '1.0'
|
82
88
|
type: :development
|
83
89
|
prerelease: false
|
84
90
|
version_requirements: !ruby/object:Gem::Requirement
|
85
91
|
requirements:
|
86
|
-
- -
|
92
|
+
- - ~>
|
87
93
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0
|
94
|
+
version: '1.0'
|
89
95
|
- !ruby/object:Gem::Dependency
|
90
96
|
name: rspec
|
91
97
|
requirement: !ruby/object:Gem::Requirement
|
92
98
|
requirements:
|
93
99
|
- - ~>
|
94
100
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
101
|
+
version: '3.0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ~>
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '3.0'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rspec-its
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ~>
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '1.0'
|
96
116
|
type: :development
|
97
117
|
prerelease: false
|
98
118
|
version_requirements: !ruby/object:Gem::Requirement
|
99
119
|
requirements:
|
100
120
|
- - ~>
|
101
121
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
122
|
+
version: '1.0'
|
103
123
|
- !ruby/object:Gem::Dependency
|
104
124
|
name: coveralls
|
105
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,11 +166,8 @@ files:
|
|
146
166
|
- Rakefile
|
147
167
|
- execute_with_rescue_with_airbrake.gemspec
|
148
168
|
- gemfiles/rails_3_2.gemfile
|
149
|
-
- gemfiles/rails_3_2.gemfile.lock
|
150
169
|
- gemfiles/rails_4_0.gemfile
|
151
|
-
- gemfiles/rails_4_0.gemfile.lock
|
152
170
|
- gemfiles/rails_4_1.gemfile
|
153
|
-
- gemfiles/rails_4_1.gemfile.lock
|
154
171
|
- lib/execute_with_rescue/errors/no_airbrake_adapter.rb
|
155
172
|
- lib/execute_with_rescue/mixins/with_airbrake.rb
|
156
173
|
- lib/execute_with_rescue_with_airbrake.rb
|