rollbar 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
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