rollbar 3.2.0 → 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/.rubocop.yml +81 -34
- data/Gemfile +8 -8
- data/gemfiles/rails30.gemfile +10 -12
- data/gemfiles/rails31.gemfile +10 -12
- data/gemfiles/rails32.gemfile +3 -5
- data/gemfiles/rails40.gemfile +2 -4
- data/gemfiles/rails41.gemfile +2 -5
- data/gemfiles/rails42.gemfile +4 -9
- data/gemfiles/rails50.gemfile +7 -9
- data/gemfiles/rails51.gemfile +6 -8
- data/gemfiles/rails52.gemfile +5 -5
- data/gemfiles/rails60.gemfile +3 -4
- data/gemfiles/rails61.gemfile +3 -3
- 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 +16 -7
- data/lib/rollbar/configuration.rb +113 -91
- 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 -1
- 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 +32 -20
- 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 +5 -5
- data/lib/rollbar/plugins/thread.rb +1 -1
- 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 +37 -17
- 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 +3 -3
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: 2021-
|
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:
|
@@ -49,7 +49,7 @@ files:
|
|
49
49
|
- gemfiles/rails60.gemfile
|
50
50
|
- gemfiles/rails61.gemfile
|
51
51
|
- lib/generators/rollbar/rollbar_generator.rb
|
52
|
-
- lib/generators/rollbar/templates/initializer.
|
52
|
+
- lib/generators/rollbar/templates/initializer.erb
|
53
53
|
- lib/rails/rollbar_runner.rb
|
54
54
|
- lib/rollbar.rb
|
55
55
|
- lib/rollbar/capistrano.rb
|