airbrake-extended 0.0.3
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 +7 -0
- data/.gitignore +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +113 -0
- data/README.md +16 -0
- data/airbrake-extended.gemspec +16 -0
- data/lib/README.md +22 -0
- data/lib/airbrake-extended.rb +3 -0
- data/lib/patches/delayed_plugin.rb +46 -0
- data/lib/patches/standard_error.rb +24 -0
- metadata +95 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 0ec52ddc9bb46636c71f9db08278c5af2fd78e11
|
|
4
|
+
data.tar.gz: 19ed9ca49c538bcfdc2bb890a80c8523f5d770cd
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 39b58075b9a7d09069e4ea437c68c45caf7052558124a01a588e5b4216159991e692590acc23b56cc117adafde44b3c1f3347b524253690694cc626459c11774
|
|
7
|
+
data.tar.gz: 300906efd699bc907976724ae16926a596961a9ba6e00e4e50f4275992dfd7c082747ccac73c58e886eb5b0ece66ae0b5b7346aeedb240bd788040cea05d3719
|
data/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.bundle
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
airbrake-extended (0.0.3)
|
|
5
|
+
delayed_job (~> 4.0, >= 4.0.0)
|
|
6
|
+
rails (~> 4.0, >= 4.0.0)
|
|
7
|
+
|
|
8
|
+
GEM
|
|
9
|
+
remote: https://rubygems.org/
|
|
10
|
+
specs:
|
|
11
|
+
actionmailer (4.2.0)
|
|
12
|
+
actionpack (= 4.2.0)
|
|
13
|
+
actionview (= 4.2.0)
|
|
14
|
+
activejob (= 4.2.0)
|
|
15
|
+
mail (~> 2.5, >= 2.5.4)
|
|
16
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
17
|
+
actionpack (4.2.0)
|
|
18
|
+
actionview (= 4.2.0)
|
|
19
|
+
activesupport (= 4.2.0)
|
|
20
|
+
rack (~> 1.6.0)
|
|
21
|
+
rack-test (~> 0.6.2)
|
|
22
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
23
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
|
24
|
+
actionview (4.2.0)
|
|
25
|
+
activesupport (= 4.2.0)
|
|
26
|
+
builder (~> 3.1)
|
|
27
|
+
erubis (~> 2.7.0)
|
|
28
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
29
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
|
30
|
+
activejob (4.2.0)
|
|
31
|
+
activesupport (= 4.2.0)
|
|
32
|
+
globalid (>= 0.3.0)
|
|
33
|
+
activemodel (4.2.0)
|
|
34
|
+
activesupport (= 4.2.0)
|
|
35
|
+
builder (~> 3.1)
|
|
36
|
+
activerecord (4.2.0)
|
|
37
|
+
activemodel (= 4.2.0)
|
|
38
|
+
activesupport (= 4.2.0)
|
|
39
|
+
arel (~> 6.0)
|
|
40
|
+
activesupport (4.2.0)
|
|
41
|
+
i18n (~> 0.7)
|
|
42
|
+
json (~> 1.7, >= 1.7.7)
|
|
43
|
+
minitest (~> 5.1)
|
|
44
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
|
45
|
+
tzinfo (~> 1.1)
|
|
46
|
+
arel (6.0.0)
|
|
47
|
+
builder (3.2.2)
|
|
48
|
+
delayed_job (4.0.6)
|
|
49
|
+
activesupport (>= 3.0, < 5.0)
|
|
50
|
+
erubis (2.7.0)
|
|
51
|
+
globalid (0.3.0)
|
|
52
|
+
activesupport (>= 4.1.0)
|
|
53
|
+
hike (1.2.3)
|
|
54
|
+
i18n (0.7.0)
|
|
55
|
+
json (1.8.2)
|
|
56
|
+
loofah (2.0.1)
|
|
57
|
+
nokogiri (>= 1.5.9)
|
|
58
|
+
mail (2.6.3)
|
|
59
|
+
mime-types (>= 1.16, < 3)
|
|
60
|
+
mime-types (2.4.3)
|
|
61
|
+
mini_portile (0.6.2)
|
|
62
|
+
minitest (5.5.1)
|
|
63
|
+
multi_json (1.10.1)
|
|
64
|
+
nokogiri (1.6.6.2)
|
|
65
|
+
mini_portile (~> 0.6.0)
|
|
66
|
+
rack (1.6.0)
|
|
67
|
+
rack-test (0.6.3)
|
|
68
|
+
rack (>= 1.0)
|
|
69
|
+
rails (4.2.0)
|
|
70
|
+
actionmailer (= 4.2.0)
|
|
71
|
+
actionpack (= 4.2.0)
|
|
72
|
+
actionview (= 4.2.0)
|
|
73
|
+
activejob (= 4.2.0)
|
|
74
|
+
activemodel (= 4.2.0)
|
|
75
|
+
activerecord (= 4.2.0)
|
|
76
|
+
activesupport (= 4.2.0)
|
|
77
|
+
bundler (>= 1.3.0, < 2.0)
|
|
78
|
+
railties (= 4.2.0)
|
|
79
|
+
sprockets-rails
|
|
80
|
+
rails-deprecated_sanitizer (1.0.3)
|
|
81
|
+
activesupport (>= 4.2.0.alpha)
|
|
82
|
+
rails-dom-testing (1.0.5)
|
|
83
|
+
activesupport (>= 4.2.0.beta, < 5.0)
|
|
84
|
+
nokogiri (~> 1.6.0)
|
|
85
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
|
86
|
+
rails-html-sanitizer (1.0.1)
|
|
87
|
+
loofah (~> 2.0)
|
|
88
|
+
railties (4.2.0)
|
|
89
|
+
actionpack (= 4.2.0)
|
|
90
|
+
activesupport (= 4.2.0)
|
|
91
|
+
rake (>= 0.8.7)
|
|
92
|
+
thor (>= 0.18.1, < 2.0)
|
|
93
|
+
rake (10.4.2)
|
|
94
|
+
sprockets (2.12.3)
|
|
95
|
+
hike (~> 1.2)
|
|
96
|
+
multi_json (~> 1.0)
|
|
97
|
+
rack (~> 1.0)
|
|
98
|
+
tilt (~> 1.1, != 1.3.0)
|
|
99
|
+
sprockets-rails (2.2.4)
|
|
100
|
+
actionpack (>= 3.0)
|
|
101
|
+
activesupport (>= 3.0)
|
|
102
|
+
sprockets (>= 2.8, < 4.0)
|
|
103
|
+
thor (0.19.1)
|
|
104
|
+
thread_safe (0.3.4)
|
|
105
|
+
tilt (1.4.1)
|
|
106
|
+
tzinfo (1.2.2)
|
|
107
|
+
thread_safe (~> 0.1)
|
|
108
|
+
|
|
109
|
+
PLATFORMS
|
|
110
|
+
ruby
|
|
111
|
+
|
|
112
|
+
DEPENDENCIES
|
|
113
|
+
airbrake-extended!
|
data/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Airbrake Extended
|
|
2
|
+
|
|
3
|
+
_Send instance variables from raised exceptions as parameters with Airbrake notifications._
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
gem 'airbrake-extended'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Caveats
|
|
11
|
+
|
|
12
|
+
- Currently only wraps exceptions raised within DelayedJob jobs.
|
|
13
|
+
- Meant to be used in a Rails environment.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Made with ♥ by [@jfeldstein](http://twitter.com/jfeldstein).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Gem::Specification.new do |s|
|
|
2
|
+
s.name = 'airbrake-extended'
|
|
3
|
+
s.version = '0.0.3'
|
|
4
|
+
s.date = '2015-03-09'
|
|
5
|
+
s.summary = "Informative Airbrake parameters."
|
|
6
|
+
s.description = "Instance variables from the raised exception are included as parameters in the Airbrake notification. Currently only active in DelayedJob jobs. Meant to be used in a Rails environment."
|
|
7
|
+
s.authors = ["Jordan Feldstein", "@jfeldstein"]
|
|
8
|
+
s.email = 'jfeldstein+gem@gmail.com'
|
|
9
|
+
s.files = `git ls-files`.split("\n")
|
|
10
|
+
s.homepage =
|
|
11
|
+
'https://github.com/jfeldstein/airbrake-extended'
|
|
12
|
+
s.license = 'MIT'
|
|
13
|
+
|
|
14
|
+
s.add_dependency 'delayed_job', '~> 4.0', '>= 4.0.0'
|
|
15
|
+
s.add_dependency 'rails', '~> 4.0', '>= 4.0.0'
|
|
16
|
+
end
|
data/lib/README.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Airbrake Extended
|
|
2
|
+
|
|
3
|
+
_Send instance variables from raised exceptions as parameters with Airbrake notifications._
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
gem 'airbrake-extended'
|
|
8
|
+
|
|
9
|
+
Automatically patches DelayedJob jobs with its custom notifier.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Caveats
|
|
13
|
+
|
|
14
|
+
- Currently only wraps exceptions raised within DelayedJob jobs.
|
|
15
|
+
- Meant to be used in a Rails environment.
|
|
16
|
+
|
|
17
|
+
### To-Do
|
|
18
|
+
|
|
19
|
+
- Want to patch core Airbrake capture, so that parameters are sent with all errors, not just Delayed Job.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
Made with ♥ by [@jfeldstein](http://twitter.com/jfeldstein).
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Delayed::Plugins::AirbrakeExtended
|
|
2
|
+
class Plugin < ::Delayed::Plugin
|
|
3
|
+
module Notify
|
|
4
|
+
def error(job, exception)
|
|
5
|
+
# rescue if ExceptionNotifier fails for some reason
|
|
6
|
+
begin
|
|
7
|
+
# Default is to include the job_id
|
|
8
|
+
params = {job_id: job.id}
|
|
9
|
+
|
|
10
|
+
# But also include any instance variables set in the exception itself.
|
|
11
|
+
#
|
|
12
|
+
# The is the heart of things. I recommend using custom exception classes
|
|
13
|
+
# which take the objects being worked on when the erorr is raised, and
|
|
14
|
+
# stores them as instance variables. This means when an error occurs, you
|
|
15
|
+
# get to see exactly which instance of a model was being worked on, and
|
|
16
|
+
# exactly what that hash of updates consisted of. Much easier than just the
|
|
17
|
+
# line number and message, or having to write custom begin/rescue/notifiy's
|
|
18
|
+
# everywhere.
|
|
19
|
+
#
|
|
20
|
+
params.merge!(error.airbrake_params) if error.respond_to? :airbrake_params
|
|
21
|
+
|
|
22
|
+
Airbrake.notify_or_ignore(error, parameters: params)
|
|
23
|
+
|
|
24
|
+
rescue Exception => e
|
|
25
|
+
Rails.logger.error "ExceptionNotifier failed: #{e.class.name}: #{e.message}"
|
|
26
|
+
|
|
27
|
+
e.backtrace.each do |f|
|
|
28
|
+
Rails.logger.error " #{f}"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Rails.logger.flush
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
super if defined?(super)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
callbacks do |lifecycle|
|
|
39
|
+
lifecycle.before(:invoke_job) do |job|
|
|
40
|
+
payload = job.payload_object
|
|
41
|
+
payload = payload.object if payload.is_a? Delayed::PerformableMethod
|
|
42
|
+
payload.extend Notify
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class StandardError
|
|
2
|
+
# Shortcut for .send(:notify_or_ignore, *e.airbrake_args)
|
|
3
|
+
def airbrake_args
|
|
4
|
+
[self, parameters: airbrake_params]
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# Default is to report all instance variables to Airbrake.
|
|
8
|
+
def airbrake_params
|
|
9
|
+
params = {}
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
instance_variables.each do |name|
|
|
13
|
+
params[name.to_s] = instance_variable_get(name).try(:as_json)
|
|
14
|
+
end
|
|
15
|
+
rescue StandardError => e
|
|
16
|
+
# In development or test, complain if this goes wrong.
|
|
17
|
+
# In production, don't crash, omitting params instead.
|
|
18
|
+
# Dear user: If your errors stop showing parameters, this may be why.
|
|
19
|
+
raise e if Rails.env.development?
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
params
|
|
23
|
+
end
|
|
24
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: airbrake-extended
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.3
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Jordan Feldstein
|
|
8
|
+
- '@jfeldstein'
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2015-03-09 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: delayed_job
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ~>
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: '4.0'
|
|
21
|
+
- - '>='
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: 4.0.0
|
|
24
|
+
type: :runtime
|
|
25
|
+
prerelease: false
|
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
27
|
+
requirements:
|
|
28
|
+
- - ~>
|
|
29
|
+
- !ruby/object:Gem::Version
|
|
30
|
+
version: '4.0'
|
|
31
|
+
- - '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 4.0.0
|
|
34
|
+
- !ruby/object:Gem::Dependency
|
|
35
|
+
name: rails
|
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ~>
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '4.0'
|
|
41
|
+
- - '>='
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: 4.0.0
|
|
44
|
+
type: :runtime
|
|
45
|
+
prerelease: false
|
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
47
|
+
requirements:
|
|
48
|
+
- - ~>
|
|
49
|
+
- !ruby/object:Gem::Version
|
|
50
|
+
version: '4.0'
|
|
51
|
+
- - '>='
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 4.0.0
|
|
54
|
+
description: Instance variables from the raised exception are included as parameters
|
|
55
|
+
in the Airbrake notification. Currently only active in DelayedJob jobs. Meant to
|
|
56
|
+
be used in a Rails environment.
|
|
57
|
+
email: jfeldstein+gem@gmail.com
|
|
58
|
+
executables: []
|
|
59
|
+
extensions: []
|
|
60
|
+
extra_rdoc_files: []
|
|
61
|
+
files:
|
|
62
|
+
- .gitignore
|
|
63
|
+
- Gemfile
|
|
64
|
+
- Gemfile.lock
|
|
65
|
+
- README.md
|
|
66
|
+
- airbrake-extended.gemspec
|
|
67
|
+
- lib/README.md
|
|
68
|
+
- lib/airbrake-extended.rb
|
|
69
|
+
- lib/patches/delayed_plugin.rb
|
|
70
|
+
- lib/patches/standard_error.rb
|
|
71
|
+
homepage: https://github.com/jfeldstein/airbrake-extended
|
|
72
|
+
licenses:
|
|
73
|
+
- MIT
|
|
74
|
+
metadata: {}
|
|
75
|
+
post_install_message:
|
|
76
|
+
rdoc_options: []
|
|
77
|
+
require_paths:
|
|
78
|
+
- lib
|
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - '>='
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: '0'
|
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - '>='
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
89
|
+
requirements: []
|
|
90
|
+
rubyforge_project:
|
|
91
|
+
rubygems_version: 2.4.1
|
|
92
|
+
signing_key:
|
|
93
|
+
specification_version: 4
|
|
94
|
+
summary: Informative Airbrake parameters.
|
|
95
|
+
test_files: []
|