rollbar 3.2.0 → 3.3.0

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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +81 -34
  3. data/Gemfile +8 -8
  4. data/gemfiles/rails30.gemfile +10 -12
  5. data/gemfiles/rails31.gemfile +10 -12
  6. data/gemfiles/rails32.gemfile +3 -5
  7. data/gemfiles/rails40.gemfile +2 -4
  8. data/gemfiles/rails41.gemfile +2 -5
  9. data/gemfiles/rails42.gemfile +4 -9
  10. data/gemfiles/rails50.gemfile +7 -9
  11. data/gemfiles/rails51.gemfile +6 -8
  12. data/gemfiles/rails52.gemfile +5 -5
  13. data/gemfiles/rails60.gemfile +3 -4
  14. data/gemfiles/rails61.gemfile +3 -3
  15. data/lib/generators/rollbar/rollbar_generator.rb +18 -14
  16. data/lib/generators/rollbar/templates/{initializer.rb → initializer.erb} +0 -0
  17. data/lib/rails/rollbar_runner.rb +12 -5
  18. data/lib/rollbar/capistrano.rb +16 -8
  19. data/lib/rollbar/capistrano3.rb +8 -2
  20. data/lib/rollbar/capistrano_tasks.rb +16 -7
  21. data/lib/rollbar/configuration.rb +113 -91
  22. data/lib/rollbar/delay/shoryuken.rb +4 -3
  23. data/lib/rollbar/delay/sidekiq.rb +3 -1
  24. data/lib/rollbar/delay/sucker_punch.rb +1 -2
  25. data/lib/rollbar/delay/thread.rb +3 -2
  26. data/lib/rollbar/deploy.rb +6 -7
  27. data/lib/rollbar/encoding/encoder.rb +7 -3
  28. data/lib/rollbar/exception_reporter.rb +17 -8
  29. data/lib/rollbar/item/backtrace.rb +10 -8
  30. data/lib/rollbar/item/frame.rb +6 -5
  31. data/lib/rollbar/item/locals.rb +3 -1
  32. data/lib/rollbar/item.rb +47 -38
  33. data/lib/rollbar/json.rb +1 -1
  34. data/lib/rollbar/lazy_store.rb +1 -3
  35. data/lib/rollbar/logger.rb +2 -0
  36. data/lib/rollbar/logger_proxy.rb +3 -1
  37. data/lib/rollbar/middleware/js.rb +32 -20
  38. data/lib/rollbar/middleware/rack/builder.rb +3 -3
  39. data/lib/rollbar/middleware/rack/test_session.rb +3 -3
  40. data/lib/rollbar/middleware/rack.rb +4 -4
  41. data/lib/rollbar/middleware/rails/rollbar.rb +9 -6
  42. data/lib/rollbar/middleware/rails/show_exceptions.rb +8 -4
  43. data/lib/rollbar/notifier/trace_with_bindings.rb +4 -2
  44. data/lib/rollbar/notifier.rb +179 -133
  45. data/lib/rollbar/plugin.rb +8 -8
  46. data/lib/rollbar/plugins/active_job.rb +11 -2
  47. data/lib/rollbar/plugins/delayed_job/plugin.rb +10 -3
  48. data/lib/rollbar/plugins/goalie.rb +27 -16
  49. data/lib/rollbar/plugins/rails/controller_methods.rb +18 -14
  50. data/lib/rollbar/plugins/rails/railtie30.rb +2 -1
  51. data/lib/rollbar/plugins/rails/railtie32.rb +2 -1
  52. data/lib/rollbar/plugins/rails/railtie_mixin.rb +2 -2
  53. data/lib/rollbar/plugins/rails.rb +5 -2
  54. data/lib/rollbar/plugins/rake.rb +2 -1
  55. data/lib/rollbar/plugins/sidekiq/plugin.rb +5 -5
  56. data/lib/rollbar/plugins/thread.rb +1 -1
  57. data/lib/rollbar/plugins/validations.rb +3 -1
  58. data/lib/rollbar/rake_tasks.rb +0 -1
  59. data/lib/rollbar/request_data_extractor.rb +38 -17
  60. data/lib/rollbar/rollbar_test.rb +3 -1
  61. data/lib/rollbar/scrubbers/params.rb +13 -7
  62. data/lib/rollbar/scrubbers/url.rb +37 -17
  63. data/lib/rollbar/scrubbers.rb +1 -1
  64. data/lib/rollbar/truncation/remove_any_key_strategy.rb +4 -1
  65. data/lib/rollbar/truncation/remove_extra_strategy.rb +3 -1
  66. data/lib/rollbar/util/hash.rb +14 -7
  67. data/lib/rollbar/util/ip_anonymizer.rb +1 -1
  68. data/lib/rollbar/util.rb +19 -13
  69. data/lib/rollbar/version.rb +1 -1
  70. data/lib/rollbar.rb +12 -7
  71. data/lib/tasks/benchmark.rake +2 -1
  72. data/rollbar.gemspec +3 -1
  73. 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
- return if obj.frozen? || seen[obj.object_id]
10
+ seen.compare_by_identity
11
+ return if obj.frozen? || seen[obj]
11
12
 
12
- seen[obj.object_id] = true
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.object_id] if copied[obj.object_id]
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.object_id] = result
60
+ copied[obj] = result
58
61
 
59
- if obj.is_a?(::Hash)
62
+ case obj
63
+ when ::Hash
60
64
  obj.each { |k, v| result[k] = deep_copy(v, copied) }
61
- elsif obj.is_a?(Array)
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
- if obj.is_a?(::Hash)
73
+ case obj
74
+ when ::Hash
70
75
  obj.dup
71
- elsif obj.is_a?(Array)
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.object_id] && merged[hash1.object_id].include?(hash2.object_id)
89
+ return hash1 if merged[hash1] && merged[hash1].include?(hash2.object_id)
84
90
 
85
- merged[hash1.object_id] ||= []
86
- merged[hash1.object_id] << hash2.object_id
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.to_s}/).count
130
+ caller.grep(/#{file_path}.*#{method_symbol}/).count
125
131
  end
126
132
 
127
133
  def self.method_in_stack(method_symbol, file_path = '')
@@ -1,3 +1,3 @@
1
1
  module Rollbar
2
- VERSION = '3.2.0'.freeze
2
+ VERSION = '3.3.0'.freeze
3
3
  end
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, level = 'error')
164
- Kernel.warn('[DEPRECATION] Rollbar.report_exception has been deprecated, please use log() or one of the level functions')
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, please use log() or one of the level functions')
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, person_data = nil, extra_data = nil)
182
- Kernel.warn('[DEPRECATION] Rollbar.report_message_with_request has been deprecated, please use log() or one of the level functions')
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
@@ -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, :c_return, :raise) do |tp|
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 { |f| f.match(%r{^(test|spec|features)/}) }
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.2.0
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-05-28 00:00:00.000000000 Z
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.rb
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