rollbar 3.1.1 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +18 -1
- data/.rubocop.yml +81 -34
- data/Gemfile +17 -10
- data/README.md +1 -1
- data/data/rollbar.snippet.js +1 -1
- data/gemfiles/rails30.gemfile +11 -12
- data/gemfiles/rails31.gemfile +12 -13
- data/gemfiles/rails32.gemfile +5 -6
- data/gemfiles/rails40.gemfile +3 -5
- data/gemfiles/rails41.gemfile +3 -6
- data/gemfiles/rails42.gemfile +5 -10
- data/gemfiles/rails50.gemfile +9 -10
- data/gemfiles/rails51.gemfile +8 -9
- data/gemfiles/rails52.gemfile +6 -5
- data/gemfiles/rails60.gemfile +7 -12
- data/gemfiles/rails61.gemfile +54 -0
- data/lib/generators/rollbar/rollbar_generator.rb +18 -14
- data/lib/generators/rollbar/templates/{initializer.rb → initializer.erb} +0 -0
- data/lib/rails/rollbar_runner.rb +12 -5
- data/lib/rollbar/capistrano.rb +16 -8
- data/lib/rollbar/capistrano3.rb +8 -2
- data/lib/rollbar/capistrano_tasks.rb +37 -10
- data/lib/rollbar/configuration.rb +114 -90
- data/lib/rollbar/delay/shoryuken.rb +4 -3
- data/lib/rollbar/delay/sidekiq.rb +3 -1
- data/lib/rollbar/delay/sucker_punch.rb +1 -2
- data/lib/rollbar/delay/thread.rb +3 -2
- data/lib/rollbar/deploy.rb +6 -7
- data/lib/rollbar/encoding/encoder.rb +7 -3
- data/lib/rollbar/exception_reporter.rb +17 -8
- data/lib/rollbar/item/backtrace.rb +10 -8
- data/lib/rollbar/item/frame.rb +6 -5
- data/lib/rollbar/item/locals.rb +3 -2
- data/lib/rollbar/item.rb +47 -38
- data/lib/rollbar/json.rb +1 -1
- data/lib/rollbar/lazy_store.rb +1 -3
- data/lib/rollbar/logger.rb +2 -0
- data/lib/rollbar/logger_proxy.rb +3 -1
- data/lib/rollbar/middleware/js.rb +58 -36
- data/lib/rollbar/middleware/rack/builder.rb +3 -3
- data/lib/rollbar/middleware/rack/test_session.rb +3 -3
- data/lib/rollbar/middleware/rack.rb +4 -4
- data/lib/rollbar/middleware/rails/rollbar.rb +9 -6
- data/lib/rollbar/middleware/rails/show_exceptions.rb +8 -4
- data/lib/rollbar/notifier/trace_with_bindings.rb +4 -2
- data/lib/rollbar/notifier.rb +179 -133
- data/lib/rollbar/plugin.rb +8 -8
- data/lib/rollbar/plugins/active_job.rb +11 -2
- data/lib/rollbar/plugins/delayed_job/plugin.rb +10 -3
- data/lib/rollbar/plugins/goalie.rb +27 -16
- data/lib/rollbar/plugins/rails/controller_methods.rb +18 -14
- data/lib/rollbar/plugins/rails/railtie30.rb +2 -1
- data/lib/rollbar/plugins/rails/railtie32.rb +2 -1
- data/lib/rollbar/plugins/rails/railtie_mixin.rb +2 -2
- data/lib/rollbar/plugins/rails.rb +5 -2
- data/lib/rollbar/plugins/rake.rb +2 -1
- data/lib/rollbar/plugins/sidekiq/plugin.rb +37 -20
- data/lib/rollbar/plugins/sidekiq.rb +1 -1
- data/lib/rollbar/plugins/thread.rb +8 -7
- data/lib/rollbar/plugins/validations.rb +3 -1
- data/lib/rollbar/rake_tasks.rb +0 -1
- data/lib/rollbar/request_data_extractor.rb +38 -17
- data/lib/rollbar/rollbar_test.rb +3 -1
- data/lib/rollbar/scrubbers/params.rb +13 -7
- data/lib/rollbar/scrubbers/url.rb +48 -14
- data/lib/rollbar/scrubbers.rb +1 -1
- data/lib/rollbar/truncation/remove_any_key_strategy.rb +4 -1
- data/lib/rollbar/truncation/remove_extra_strategy.rb +3 -1
- data/lib/rollbar/util/hash.rb +14 -7
- data/lib/rollbar/util/ip_anonymizer.rb +1 -1
- data/lib/rollbar/util.rb +19 -13
- data/lib/rollbar/version.rb +1 -1
- data/lib/rollbar.rb +12 -7
- data/lib/tasks/benchmark.rake +2 -1
- data/rollbar.gemspec +3 -1
- metadata +5 -5
@@ -24,7 +24,9 @@ module Rollbar
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def delete_trace_chain_extra(body)
|
27
|
-
|
27
|
+
return unless body['trace_chain'] && body['trace_chain'][0]['extra']
|
28
|
+
|
29
|
+
body['trace_chain'][0].delete('extra')
|
28
30
|
end
|
29
31
|
|
30
32
|
def delete_trace_extra(body)
|
data/lib/rollbar/util/hash.rb
CHANGED
@@ -2,9 +2,10 @@ module Rollbar
|
|
2
2
|
module Util
|
3
3
|
module Hash # :nodoc:
|
4
4
|
def self.deep_stringify_keys(hash, seen = {})
|
5
|
-
|
5
|
+
seen.compare_by_identity
|
6
|
+
return if seen[hash]
|
6
7
|
|
7
|
-
seen[hash
|
8
|
+
seen[hash] = true
|
8
9
|
replace_seen_children(hash, seen)
|
9
10
|
|
10
11
|
hash.reduce({}) do |h, (key, value)|
|
@@ -19,10 +20,10 @@ module Rollbar
|
|
19
20
|
when ::Hash
|
20
21
|
send(meth, thing, seen)
|
21
22
|
when Array
|
22
|
-
if seen[thing
|
23
|
+
if seen[thing]
|
23
24
|
thing
|
24
25
|
else
|
25
|
-
seen[thing
|
26
|
+
seen[thing] = true
|
26
27
|
replace_seen_children(thing, seen)
|
27
28
|
thing.map { |v| map_value(v, meth, seen) }
|
28
29
|
end
|
@@ -34,12 +35,18 @@ module Rollbar
|
|
34
35
|
def self.replace_seen_children(thing, seen)
|
35
36
|
case thing
|
36
37
|
when ::Hash
|
37
|
-
thing.keys.each do |key|
|
38
|
-
|
38
|
+
thing.keys.each do |key| # rubocop:disable Style/HashEachMethods
|
39
|
+
if seen[thing[key]]
|
40
|
+
thing[key] =
|
41
|
+
"removed circular reference: #{thing[key]}"
|
42
|
+
end
|
39
43
|
end
|
40
44
|
when Array
|
41
45
|
thing.each_with_index do |_, i|
|
42
|
-
|
46
|
+
if seen[thing[i]]
|
47
|
+
thing[i] =
|
48
|
+
"removed circular reference: #{thing[i]}"
|
49
|
+
end
|
43
50
|
end
|
44
51
|
end
|
45
52
|
end
|
@@ -24,7 +24,7 @@ module Rollbar
|
|
24
24
|
def self.anonymize_ipv6(ip)
|
25
25
|
ip_parts = ip.to_s.split ':'
|
26
26
|
|
27
|
-
ip_string = ip_parts[0..2].join(':')
|
27
|
+
ip_string = "#{ip_parts[0..2].join(':')}:0000:0000:0000:0000:0000"
|
28
28
|
|
29
29
|
IPAddr.new(ip_string).to_s
|
30
30
|
end
|
data/lib/rollbar/util.rb
CHANGED
@@ -7,9 +7,10 @@ module Rollbar
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.iterate_and_update(obj, block, seen = {})
|
10
|
-
|
10
|
+
seen.compare_by_identity
|
11
|
+
return if obj.frozen? || seen[obj]
|
11
12
|
|
12
|
-
seen[obj
|
13
|
+
seen[obj] = true
|
13
14
|
|
14
15
|
if obj.is_a?(Array)
|
15
16
|
iterate_and_update_array(obj, block, seen)
|
@@ -29,7 +30,7 @@ module Rollbar
|
|
29
30
|
end
|
30
31
|
|
31
32
|
def self.iterate_and_update_hash(obj, block, seen)
|
32
|
-
obj.keys.each do |k|
|
33
|
+
obj.keys.each do |k| # rubocop:disable Style/HashEachMethods
|
33
34
|
v = obj[k]
|
34
35
|
new_key = block.call(k)
|
35
36
|
|
@@ -47,18 +48,21 @@ module Rollbar
|
|
47
48
|
end
|
48
49
|
|
49
50
|
def self.deep_copy(obj, copied = {})
|
51
|
+
copied.compare_by_identity
|
52
|
+
|
50
53
|
# if we've already made a copy, return it.
|
51
|
-
return copied[obj
|
54
|
+
return copied[obj] if copied[obj]
|
52
55
|
|
53
56
|
result = clone_obj(obj)
|
54
57
|
|
55
58
|
# Memoize the cloned object before recursive calls to #deep_copy below.
|
56
59
|
# This is the point of doing the work in two steps.
|
57
|
-
copied[obj
|
60
|
+
copied[obj] = result
|
58
61
|
|
59
|
-
|
62
|
+
case obj
|
63
|
+
when ::Hash
|
60
64
|
obj.each { |k, v| result[k] = deep_copy(v, copied) }
|
61
|
-
|
65
|
+
when Array
|
62
66
|
obj.each { |v| result << deep_copy(v, copied) }
|
63
67
|
end
|
64
68
|
|
@@ -66,9 +70,10 @@ module Rollbar
|
|
66
70
|
end
|
67
71
|
|
68
72
|
def self.clone_obj(obj)
|
69
|
-
|
73
|
+
case obj
|
74
|
+
when ::Hash
|
70
75
|
obj.dup
|
71
|
-
|
76
|
+
when Array
|
72
77
|
obj.dup.clear
|
73
78
|
else
|
74
79
|
obj
|
@@ -78,12 +83,13 @@ module Rollbar
|
|
78
83
|
def self.deep_merge(hash1, hash2, merged = {})
|
79
84
|
hash1 ||= {}
|
80
85
|
hash2 ||= {}
|
86
|
+
merged.compare_by_identity
|
81
87
|
|
82
88
|
# If we've already merged these two objects, return hash1 now.
|
83
|
-
return hash1 if merged[hash1
|
89
|
+
return hash1 if merged[hash1] && merged[hash1].include?(hash2.object_id)
|
84
90
|
|
85
|
-
merged[hash1
|
86
|
-
merged[hash1
|
91
|
+
merged[hash1] ||= []
|
92
|
+
merged[hash1] << hash2.object_id
|
87
93
|
|
88
94
|
perform_deep_merge(hash1, hash2, merged)
|
89
95
|
|
@@ -121,7 +127,7 @@ module Rollbar
|
|
121
127
|
end
|
122
128
|
|
123
129
|
def self.count_method_in_stack(method_symbol, file_path = '')
|
124
|
-
caller.grep(/#{file_path}.*#{method_symbol
|
130
|
+
caller.grep(/#{file_path}.*#{method_symbol}/).count
|
125
131
|
end
|
126
132
|
|
127
133
|
def self.method_in_stack(method_symbol, file_path = '')
|
data/lib/rollbar/version.rb
CHANGED
data/lib/rollbar.rb
CHANGED
@@ -8,6 +8,7 @@ require 'forwardable'
|
|
8
8
|
begin
|
9
9
|
require 'securerandom'
|
10
10
|
rescue LoadError
|
11
|
+
# Skip loading
|
11
12
|
end
|
12
13
|
|
13
14
|
require 'rollbar/version'
|
@@ -31,8 +32,7 @@ module Rollbar
|
|
31
32
|
|
32
33
|
def_delegators :notifier, *PUBLIC_NOTIFIER_METHODS
|
33
34
|
|
34
|
-
attr_writer :plugins
|
35
|
-
attr_writer :root_notifier
|
35
|
+
attr_writer :plugins, :root_notifier
|
36
36
|
|
37
37
|
def notifier
|
38
38
|
# Use the global instance @root_notifier so we don't fall
|
@@ -160,8 +160,10 @@ module Rollbar
|
|
160
160
|
|
161
161
|
# Backwards compatibility methods
|
162
162
|
|
163
|
-
def report_exception(exception, request_data = nil, person_data = nil,
|
164
|
-
|
163
|
+
def report_exception(exception, request_data = nil, person_data = nil,
|
164
|
+
level = 'error')
|
165
|
+
Kernel.warn('[DEPRECATION] Rollbar.report_exception has been deprecated, ' \
|
166
|
+
'please use log() or one of the level functions')
|
165
167
|
|
166
168
|
scope = {}
|
167
169
|
scope[:request] = request_data if request_data
|
@@ -173,13 +175,16 @@ module Rollbar
|
|
173
175
|
end
|
174
176
|
|
175
177
|
def report_message(message, level = 'info', extra_data = nil)
|
176
|
-
Kernel.warn('[DEPRECATION] Rollbar.report_message has been deprecated,
|
178
|
+
Kernel.warn('[DEPRECATION] Rollbar.report_message has been deprecated, ' \
|
179
|
+
'please use log() or one of the level functions')
|
177
180
|
|
178
181
|
Rollbar.notifier.log(level, message, extra_data)
|
179
182
|
end
|
180
183
|
|
181
|
-
def report_message_with_request(message, level = 'info', request_data = nil,
|
182
|
-
|
184
|
+
def report_message_with_request(message, level = 'info', request_data = nil,
|
185
|
+
person_data = nil, extra_data = nil)
|
186
|
+
Kernel.warn('[DEPRECATION] Rollbar.report_message_with_request has been ' \
|
187
|
+
'deprecated, please use log() or one of the level functions')
|
183
188
|
|
184
189
|
scope = {}
|
185
190
|
scope[:request] = request_data if request_data
|
data/lib/tasks/benchmark.rake
CHANGED
@@ -77,7 +77,8 @@ class BenchmarkTraceWithBindings # :nodoc:
|
|
77
77
|
def trace_point # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
78
78
|
return unless defined?(TracePoint)
|
79
79
|
|
80
|
-
@trace_point ||= TracePoint.new(:call, :return, :b_call, :b_return, :c_call,
|
80
|
+
@trace_point ||= TracePoint.new(:call, :return, :b_call, :b_return, :c_call,
|
81
|
+
:c_return, :raise) do |tp|
|
81
82
|
next if options['hook_only']
|
82
83
|
|
83
84
|
case tp.event
|
data/rollbar.gemspec
CHANGED
@@ -12,7 +12,9 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.summary = 'Reports exceptions to Rollbar'
|
13
13
|
gem.homepage = 'https://rollbar.com'
|
14
14
|
gem.license = 'MIT'
|
15
|
-
gem.files = `git ls-files -z`.split("\x0").reject
|
15
|
+
gem.files = `git ls-files -z`.split("\x0").reject do |f|
|
16
|
+
f.match(%r{^(test|spec|features)/})
|
17
|
+
end
|
16
18
|
gem.files += ['spec/support/rollbar_api.rb'] # useful helper for app spec/tests.
|
17
19
|
gem.name = 'rollbar'
|
18
20
|
gem.require_paths = ['lib']
|
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: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rollbar, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Easy and powerful exception tracking for Ruby
|
14
14
|
email:
|
@@ -47,8 +47,9 @@ files:
|
|
47
47
|
- gemfiles/rails51.gemfile
|
48
48
|
- gemfiles/rails52.gemfile
|
49
49
|
- gemfiles/rails60.gemfile
|
50
|
+
- gemfiles/rails61.gemfile
|
50
51
|
- lib/generators/rollbar/rollbar_generator.rb
|
51
|
-
- lib/generators/rollbar/templates/initializer.
|
52
|
+
- lib/generators/rollbar/templates/initializer.erb
|
52
53
|
- lib/rails/rollbar_runner.rb
|
53
54
|
- lib/rollbar.rb
|
54
55
|
- lib/rollbar/capistrano.rb
|
@@ -160,8 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
161
|
- !ruby/object:Gem::Version
|
161
162
|
version: '0'
|
162
163
|
requirements: []
|
163
|
-
|
164
|
-
rubygems_version: 2.7.7
|
164
|
+
rubygems_version: 3.1.4
|
165
165
|
signing_key:
|
166
166
|
specification_version: 4
|
167
167
|
summary: Reports exceptions to Rollbar
|