rollbar 1.4.3 → 1.4.4
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/CHANGELOG.md +14 -0
- data/Gemfile +6 -0
- data/README.md +19 -2
- data/THANKS.md +1 -0
- data/lib/rollbar.rb +34 -15
- data/lib/rollbar/configuration.rb +2 -0
- data/lib/rollbar/sidekiq.rb +19 -20
- data/lib/rollbar/tasks/rollbar.cap +4 -4
- data/lib/rollbar/version.rb +1 -1
- data/rollbar.gemspec +1 -1
- data/spec/rollbar/sidekiq_spec.rb +47 -0
- data/spec/rollbar_spec.rb +19 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78c1bdf59f142827061ca417def8b9e593aaa877
|
4
|
+
data.tar.gz: 760a27633c4e7460602c81c506e71028f9a29bfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ce84b0b7705beaa2bea77b2ff23f5ecf187ed98e52e29d0123b205e51d3591e561193b38baa1eaf0b95e16a5bc04983fb07fa91db1841913005407e9fb5108b
|
7
|
+
data.tar.gz: 8a7ce81a92a3ff906e08e6a489a29f8e99dab6cb997928b7ddc7f74f0175ffa9d4e54facb942d61ddbd10ce305b92376897689b557ae740d9a09cd0f563853b1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 1.4.4
|
4
|
+
|
5
|
+
New features:
|
6
|
+
|
7
|
+
- Added configuration option to gather backtraces for exceptions that don't already have one (i.e. if you do `Rollbar.error(Exception.new)`). Set `config.populate_empty_backtraces = true` to enable it. See [#206](https://github.com/rollbar/rollbar-gem/pull/206)
|
8
|
+
|
9
|
+
Bug fixes:
|
10
|
+
|
11
|
+
- Reverted capistrano change as it causes problems in some setups. See [#210](https://github.com/rollbar/rollbar-gem/pull/210)
|
12
|
+
|
13
|
+
Other:
|
14
|
+
|
15
|
+
- Refactored the Sidekiq handler (no changes to the interface). See [#197](https://github.com/rollbar/rollbar-gem/pull/197)
|
16
|
+
|
3
17
|
## 1.4.3
|
4
18
|
|
5
19
|
New features:
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Rollbar notifier for Ruby [](https://travis-ci.org/rollbar/rollbar-gem/branches)
|
2
2
|
|
3
3
|
<!-- RemoveNext -->
|
4
4
|
Ruby gem for reporting exceptions, errors, and log messages to [Rollbar](https://rollbar.com).
|
@@ -9,7 +9,7 @@ Ruby gem for reporting exceptions, errors, and log messages to [Rollbar](https:/
|
|
9
9
|
|
10
10
|
Add this line to your application's Gemfile:
|
11
11
|
|
12
|
-
gem 'rollbar', '~> 1.4.
|
12
|
+
gem 'rollbar', '~> 1.4.4'
|
13
13
|
|
14
14
|
And then execute:
|
15
15
|
|
@@ -379,6 +379,23 @@ Rollbar.silenced {
|
|
379
379
|
}
|
380
380
|
```
|
381
381
|
|
382
|
+
# Sending backtrace without rescued exceptions
|
383
|
+
|
384
|
+
If you use the gem in this way:
|
385
|
+
|
386
|
+
```ruby
|
387
|
+
exception = MyException.new('this is a message')
|
388
|
+
Rollbar.error(exception)
|
389
|
+
```
|
390
|
+
|
391
|
+
You will notice a backtrace doesn't appear in your Rollbar dashboard. This is because `exception.backtrace` is `nil` in these cases. We can send the current backtrace for you even your exception doesn't have it. In order to enable this feature you should configure Rollbar in this way:
|
392
|
+
|
393
|
+
```ruby
|
394
|
+
Rollbar.configure do |config|
|
395
|
+
config.populate_empty_backtraces = true
|
396
|
+
end
|
397
|
+
```
|
398
|
+
|
382
399
|
## Delayed::Job integration
|
383
400
|
|
384
401
|
If `delayed_job` is defined, Rollbar will automatically install a plugin that reports any uncaught exceptions that occur in jobs.
|
data/THANKS.md
CHANGED
@@ -23,6 +23,7 @@ Huge thanks to the following contributors (by github username). For the most up-
|
|
23
23
|
- [GUI](https://github.com/GUI)
|
24
24
|
- [ixti](https://github.com/ixti)
|
25
25
|
- [jeremyvdw](https://github.com/jeremyvdw)
|
26
|
+
- [jjb](https://github.com/jjb)
|
26
27
|
- [johnknott](https://github.com/johnknott)
|
27
28
|
- [jonah-williams](https://github.com/jonah-williams)
|
28
29
|
- [jondeandres](https://github.com/jondeandres)
|
data/lib/rollbar.rb
CHANGED
@@ -339,23 +339,20 @@ module Rollbar
|
|
339
339
|
end
|
340
340
|
|
341
341
|
def trace_data(exception)
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
end
|
352
|
-
}
|
353
|
-
# reverse so that the order is as rollbar expects
|
354
|
-
frames.reverse!
|
355
|
-
else
|
356
|
-
frames = []
|
342
|
+
frames = exception_backtrace(exception).map do |frame|
|
343
|
+
# parse the line
|
344
|
+
match = frame.match(/(.*):(\d+)(?::in `([^']+)')?/)
|
345
|
+
|
346
|
+
if match
|
347
|
+
{ :filename => match[1], :lineno => match[2].to_i, :method => match[3] }
|
348
|
+
else
|
349
|
+
{ :filename => "<unknown>", :lineno => 0, :method => frame }
|
350
|
+
end
|
357
351
|
end
|
358
352
|
|
353
|
+
# reverse so that the order is as rollbar expects
|
354
|
+
frames.reverse!
|
355
|
+
|
359
356
|
{
|
360
357
|
:frames => frames,
|
361
358
|
:exception => {
|
@@ -365,6 +362,28 @@ module Rollbar
|
|
365
362
|
}
|
366
363
|
end
|
367
364
|
|
365
|
+
# Returns the backtrace to be sent to our API. There are 3 options:
|
366
|
+
#
|
367
|
+
# 1. The exception received has a backtrace, then that backtrace is returned.
|
368
|
+
# 2. configuration.populate_empty_backtraces is disabled, we return [] here
|
369
|
+
# 3. The user has configuration.populate_empty_backtraces is enabled, then:
|
370
|
+
#
|
371
|
+
# We want to send the caller as backtrace, but the first lines of that array
|
372
|
+
# are those from the user's Rollbar.error line until this method. We want
|
373
|
+
# to remove those lines.
|
374
|
+
def exception_backtrace(exception)
|
375
|
+
return exception.backtrace if exception.backtrace.respond_to?( :map )
|
376
|
+
return [] unless configuration.populate_empty_backtraces
|
377
|
+
|
378
|
+
caller_backtrace = caller
|
379
|
+
caller_backtrace.shift while caller_backtrace[0].include?(rollbar_lib_gem_dir)
|
380
|
+
caller_backtrace
|
381
|
+
end
|
382
|
+
|
383
|
+
def rollbar_lib_gem_dir
|
384
|
+
Gem::Specification.find_by_name('rollbar').gem_dir + '/lib'
|
385
|
+
end
|
386
|
+
|
368
387
|
def trace_chain(exception)
|
369
388
|
traces = [trace_data(exception)]
|
370
389
|
visited = [exception]
|
@@ -26,6 +26,7 @@ module Rollbar
|
|
26
26
|
attr_accessor :person_id_method
|
27
27
|
attr_accessor :person_username_method
|
28
28
|
attr_accessor :person_email_method
|
29
|
+
attr_accessor :populate_empty_backtraces
|
29
30
|
attr_accessor :report_dj_data
|
30
31
|
attr_accessor :request_timeout
|
31
32
|
attr_accessor :root
|
@@ -67,6 +68,7 @@ module Rollbar
|
|
67
68
|
@person_username_method = 'username'
|
68
69
|
@person_email_method = 'email'
|
69
70
|
@project_gems = []
|
71
|
+
@populate_empty_backtraces = false
|
70
72
|
@report_dj_data = true
|
71
73
|
@request_timeout = 3
|
72
74
|
@scrub_fields = [:passwd, :password, :password_confirmation, :secret,
|
data/lib/rollbar/sidekiq.rb
CHANGED
@@ -1,34 +1,33 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
|
3
|
+
module Rollbar
|
4
|
+
class Sidekiq
|
5
|
+
PARAM_BLACKLIST = %w[backtrace error_backtrace error_message error_class]
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def call(worker, msg, queue)
|
9
|
-
yield
|
10
|
-
rescue Exception => e
|
11
|
-
params = msg.reject{ |k| PARAM_BLACKLIST.include?(k) }
|
12
|
-
scope = { :request => { :params => params } }
|
7
|
+
def self.handle_exception(msg_or_context, e)
|
8
|
+
params = msg_or_context.reject{ |k| PARAM_BLACKLIST.include?(k) }
|
9
|
+
scope = { :request => { :params => params } }
|
13
10
|
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
Rollbar.scope(scope).error(e, :use_exception_level_filters => true)
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(worker, msg, queue)
|
15
|
+
yield
|
16
|
+
rescue Exception => e
|
17
|
+
Rollbar::Sidekiq.handle_exception(msg, e)
|
18
|
+
raise
|
17
19
|
end
|
18
20
|
end
|
21
|
+
end
|
19
22
|
|
20
|
-
|
23
|
+
Sidekiq.configure_server do |config|
|
24
|
+
if Sidekiq::VERSION < '3'
|
21
25
|
config.server_middleware do |chain|
|
22
26
|
chain.add Rollbar::Sidekiq
|
23
27
|
end
|
24
|
-
|
25
|
-
else
|
26
|
-
Sidekiq.configure_server do |config|
|
28
|
+
else
|
27
29
|
config.error_handlers << Proc.new do |e, context|
|
28
|
-
|
29
|
-
scope = { :request => { :params => params } }
|
30
|
-
|
31
|
-
Rollbar.scope(scope).error(e, :use_exception_level_filters => true)
|
30
|
+
Rollbar::Sidekiq.handle_exception(context, e)
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
@@ -34,9 +34,9 @@ end
|
|
34
34
|
|
35
35
|
namespace :load do
|
36
36
|
task :defaults do
|
37
|
-
set :rollbar_user,
|
38
|
-
set :rollbar_env,
|
39
|
-
set :rollbar_token,
|
40
|
-
set :rollbar_role,
|
37
|
+
set :rollbar_user, Proc.new { ENV['USER'] || ENV['USERNAME'] }
|
38
|
+
set :rollbar_env, Proc.new { fetch :rails_env, 'production' }
|
39
|
+
set :rollbar_token, Proc.new { abort "Please specify the Rollbar access token, set :rollbar_token, 'your token'" }
|
40
|
+
set :rollbar_role, Proc.new { :app }
|
41
41
|
end
|
42
42
|
end
|
data/lib/rollbar/version.rb
CHANGED
data/rollbar.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
|
|
23
23
|
gem.add_development_dependency 'girl_friday', '>= 0.11.1'
|
24
24
|
gem.add_development_dependency 'sucker_punch', '>= 1.0.0' if RUBY_VERSION != '1.8.7'
|
25
25
|
gem.add_development_dependency 'sidekiq', '>= 2.13.0' if RUBY_VERSION != '1.8.7'
|
26
|
-
gem.add_development_dependency 'genspec', '>= 0.2.
|
26
|
+
gem.add_development_dependency 'genspec', '>= 0.2.8'
|
27
27
|
gem.add_development_dependency 'sinatra'
|
28
28
|
gem.add_development_dependency 'resque'
|
29
29
|
gem.add_development_dependency 'delayed_job'
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
unless RUBY_VERSION == '1.8.7'
|
4
|
+
require 'sidekiq'
|
5
|
+
require 'rollbar/sidekiq'
|
6
|
+
end
|
7
|
+
|
8
|
+
describe Rollbar::Sidekiq, :reconfigure_notifier => false do
|
9
|
+
describe '.handle_exception' do
|
10
|
+
let(:msg_or_context) { ['hello', 'error_backtrace', 'backtrace', 'goodbye'] }
|
11
|
+
let(:exception) { StandardError.new('oh noes') }
|
12
|
+
let(:rollbar) { double }
|
13
|
+
let(:expected_args) { { :request => { :params => ['hello', 'goodbye'] } } }
|
14
|
+
|
15
|
+
subject { described_class }
|
16
|
+
|
17
|
+
it 'constructs scope from filtered params' do
|
18
|
+
allow(rollbar).to receive(:error)
|
19
|
+
expect(Rollbar).to receive(:scope).with(expected_args) {rollbar}
|
20
|
+
|
21
|
+
described_class.handle_exception(msg_or_context, exception)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'sends the passed-in error to rollbar' do
|
25
|
+
allow(Rollbar).to receive(:scope).and_return(rollbar)
|
26
|
+
expect(rollbar).to receive(:error).with(exception, :use_exception_level_filters => true)
|
27
|
+
|
28
|
+
described_class.handle_exception(msg_or_context, exception)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#call' do
|
33
|
+
let(:msg) { ['hello'] }
|
34
|
+
let(:exception) { StandardError.new('oh noes') }
|
35
|
+
let(:middleware_block) { proc { raise exception } }
|
36
|
+
|
37
|
+
subject { Rollbar::Sidekiq.new }
|
38
|
+
|
39
|
+
it 'sends the error to Rollbar::Sidekiq.handle_exception' do
|
40
|
+
expect(Rollbar::Sidekiq).to receive(:handle_exception).with(msg, exception)
|
41
|
+
|
42
|
+
expect { subject.call(nil, msg, nil, &middleware_block) }.to raise_error(exception)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end unless RUBY_VERSION == '1.8.7'
|
46
|
+
|
47
|
+
|
data/spec/rollbar_spec.rb
CHANGED
@@ -879,6 +879,25 @@ describe Rollbar do
|
|
879
879
|
payload["data"][:body][:trace][:exception][:message].should == "oops"
|
880
880
|
end
|
881
881
|
|
882
|
+
it 'gets the backtrace from the caller' do
|
883
|
+
Rollbar.configure do |config|
|
884
|
+
config.populate_empty_backtraces = true
|
885
|
+
end
|
886
|
+
|
887
|
+
exception = Exception.new
|
888
|
+
|
889
|
+
Rollbar.error(exception)
|
890
|
+
|
891
|
+
gem_dir = Gem::Specification.find_by_name('rollbar').gem_dir
|
892
|
+
gem_lib_dir = gem_dir + '/lib'
|
893
|
+
last_report = Rollbar.last_report
|
894
|
+
|
895
|
+
filepaths = last_report[:body][:trace][:frames].map {|frame| frame[:filename] }.reverse
|
896
|
+
|
897
|
+
expect(filepaths[0]).not_to include(gem_lib_dir)
|
898
|
+
expect(filepaths.any? {|filepath| filepath.include?(gem_dir) }).to be_true
|
899
|
+
end
|
900
|
+
|
882
901
|
it 'should return the exception data with a uuid, on platforms with SecureRandom' do
|
883
902
|
if defined?(SecureRandom) and SecureRandom.respond_to?(:uuid)
|
884
903
|
exception_data = Rollbar.error(StandardError.new("oops"))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollbar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rollbar, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.2.
|
117
|
+
version: 0.2.8
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '>='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.2.
|
124
|
+
version: 0.2.8
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: sinatra
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -309,6 +309,7 @@ files:
|
|
309
309
|
- spec/rollbar/middleware/rack/builder_spec.rb
|
310
310
|
- spec/rollbar/middleware/sinatra_spec.rb
|
311
311
|
- spec/rollbar/rake_spec.rb
|
312
|
+
- spec/rollbar/sidekiq_spec.rb
|
312
313
|
- spec/rollbar/truncation/frames_strategy_spec.rb
|
313
314
|
- spec/rollbar/truncation/min_body_strategy_spec.rb
|
314
315
|
- spec/rollbar/truncation/strings_strategy_spec.rb
|
@@ -412,6 +413,7 @@ test_files:
|
|
412
413
|
- spec/rollbar/middleware/rack/builder_spec.rb
|
413
414
|
- spec/rollbar/middleware/sinatra_spec.rb
|
414
415
|
- spec/rollbar/rake_spec.rb
|
416
|
+
- spec/rollbar/sidekiq_spec.rb
|
415
417
|
- spec/rollbar/truncation/frames_strategy_spec.rb
|
416
418
|
- spec/rollbar/truncation/min_body_strategy_spec.rb
|
417
419
|
- spec/rollbar/truncation/strings_strategy_spec.rb
|