rollbar 2.19.2 → 2.19.3

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 (68) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +27 -0
  3. data/Appraisals +10 -10
  4. data/Gemfile +2 -0
  5. data/README.md +4 -1
  6. data/Rakefile +0 -0
  7. data/data/rollbar.snippet.js +1 -1
  8. data/gemfiles/rails30.gemfile +2 -0
  9. data/gemfiles/rails31.gemfile +2 -0
  10. data/gemfiles/rails32.gemfile +2 -0
  11. data/gemfiles/rails40.gemfile +2 -0
  12. data/gemfiles/rails41.gemfile +2 -0
  13. data/gemfiles/rails42.gemfile +2 -0
  14. data/gemfiles/rails50.gemfile +2 -0
  15. data/gemfiles/rails51.gemfile +2 -0
  16. data/gemfiles/rails52.gemfile +2 -0
  17. data/gemfiles/ruby_1_8_and_1_9_2.gemfile +2 -0
  18. data/lib/generators/rollbar/rollbar_generator.rb +1 -1
  19. data/lib/rails/rollbar_runner.rb +1 -1
  20. data/lib/rollbar.rb +2 -3
  21. data/lib/rollbar/capistrano3.rb +6 -3
  22. data/lib/rollbar/capistrano_tasks.rb +13 -15
  23. data/lib/rollbar/configuration.rb +10 -8
  24. data/lib/rollbar/delay/girl_friday.rb +2 -2
  25. data/lib/rollbar/delay/resque.rb +4 -6
  26. data/lib/rollbar/delay/sidekiq.rb +6 -10
  27. data/lib/rollbar/delay/sucker_punch.rb +17 -19
  28. data/lib/rollbar/delay/thread.rb +2 -2
  29. data/lib/rollbar/deploy.rb +47 -30
  30. data/lib/rollbar/encoding/encoder.rb +9 -9
  31. data/lib/rollbar/item.rb +7 -7
  32. data/lib/rollbar/item/backtrace.rb +4 -4
  33. data/lib/rollbar/item/frame.rb +7 -1
  34. data/lib/rollbar/item/locals.rb +56 -0
  35. data/lib/rollbar/json.rb +5 -2
  36. data/lib/rollbar/json/default.rb +1 -1
  37. data/lib/rollbar/json/oj.rb +1 -1
  38. data/lib/rollbar/language_support.rb +1 -1
  39. data/lib/rollbar/lazy_store.rb +5 -5
  40. data/lib/rollbar/logger.rb +1 -0
  41. data/lib/rollbar/logger_proxy.rb +1 -1
  42. data/lib/rollbar/middleware/js.rb +15 -15
  43. data/lib/rollbar/middleware/rack.rb +4 -1
  44. data/lib/rollbar/middleware/rails/rollbar.rb +10 -1
  45. data/lib/rollbar/notifier.rb +40 -15
  46. data/lib/rollbar/notifier/trace_with_bindings.rb +65 -0
  47. data/lib/rollbar/plugin.rb +54 -6
  48. data/lib/rollbar/plugins.rb +7 -1
  49. data/lib/rollbar/plugins/basic_socket.rb +21 -6
  50. data/lib/rollbar/plugins/delayed_job/job_data.rb +3 -3
  51. data/lib/rollbar/plugins/delayed_job/plugin.rb +2 -2
  52. data/lib/rollbar/plugins/goalie.rb +11 -3
  53. data/lib/rollbar/plugins/rails/controller_methods.rb +15 -3
  54. data/lib/rollbar/plugins/rake.rb +2 -2
  55. data/lib/rollbar/plugins/sidekiq/plugin.rb +5 -4
  56. data/lib/rollbar/rake_tasks.rb +2 -2
  57. data/lib/rollbar/request_data_extractor.rb +21 -18
  58. data/lib/rollbar/scrubbers.rb +7 -3
  59. data/lib/rollbar/scrubbers/params.rb +17 -16
  60. data/lib/rollbar/scrubbers/url.rb +8 -3
  61. data/lib/rollbar/truncation.rb +1 -1
  62. data/lib/rollbar/truncation/strings_strategy.rb +1 -1
  63. data/lib/rollbar/util/ip_anonymizer.rb +8 -7
  64. data/lib/rollbar/util/ip_obfuscator.rb +1 -1
  65. data/lib/rollbar/version.rb +1 -1
  66. data/lib/tasks/benchmark.rake +103 -0
  67. data/rollbar.gemspec +13 -4
  68. metadata +12 -5
@@ -13,7 +13,7 @@ module Rollbar
13
13
  STRATEGIES = [RawStrategy,
14
14
  FramesStrategy,
15
15
  StringsStrategy,
16
- MinBodyStrategy]
16
+ MinBodyStrategy].freeze
17
17
 
18
18
  def self.truncate(payload)
19
19
  result = nil
@@ -6,7 +6,7 @@ module Rollbar
6
6
  class StringsStrategy
7
7
  include ::Rollbar::Truncation::Mixin
8
8
 
9
- STRING_THRESHOLDS = [1024, 512, 256]
9
+ STRING_THRESHOLDS = [1024, 512, 256].freeze
10
10
 
11
11
  def self.call(payload)
12
12
  new.call(payload)
@@ -5,26 +5,27 @@ module Rollbar
5
5
 
6
6
  def self.anonymize_ip(ip_string)
7
7
  return ip_string unless Rollbar.configuration.anonymize_user_ip
8
+
8
9
  ip = IPAddr.new(ip_string)
9
10
  return anonymize_ipv6 ip if ip.ipv6?
10
11
  return anonymize_ipv4 ip if ip.ipv4?
11
- rescue
12
+ rescue StandardError
12
13
  nil
13
14
  end
14
-
15
+
15
16
  def self.anonymize_ipv4(ip)
16
17
  ip_parts = ip.to_s.split '.'
17
-
18
+
18
19
  ip_parts[ip_parts.count - 1] = '0'
19
-
20
+
20
21
  IPAddr.new(ip_parts.join('.')).to_s
21
22
  end
22
-
23
+
23
24
  def self.anonymize_ipv6(ip)
24
25
  ip_parts = ip.to_s.split ':'
25
-
26
+
26
27
  ip_string = ip_parts[0..2].join(':') + ':0000:0000:0000:0000:0000'
27
-
28
+
28
29
  IPAddr.new(ip_string).to_s
29
30
  end
30
31
  end
@@ -13,7 +13,7 @@ module Rollbar
13
13
  obfuscated_ip_int32 = ip_int32 ^ secret_int32 % (2 << 31)
14
14
 
15
15
  IPAddr.new(obfuscated_ip_int32, Socket::AF_INET).to_s
16
- rescue
16
+ rescue StandardError
17
17
  nil
18
18
  end
19
19
  end
@@ -1,3 +1,3 @@
1
1
  module Rollbar
2
- VERSION = '2.19.2'
2
+ VERSION = '2.19.3'.freeze
3
3
  end
@@ -0,0 +1,103 @@
1
+ require 'benchmark'
2
+
3
+ namespace :benchmark do
4
+ desc 'Measure TracePoint perf for current Ruby'
5
+ task :trace_point do
6
+ ARGV.each { |a| task(a.to_sym { ; }) } # Keep rake from treating these ask task names.
7
+
8
+ options = {}.tap do |hash|
9
+ ARGV.each { |arg| hash[arg] = true }
10
+ end
11
+
12
+ puts "options: #{options}"
13
+
14
+ trace_with_bindings = BenchmarkTraceWithBindings.new(options)
15
+
16
+ trace_with_bindings.enable
17
+ puts(Benchmark.measure do
18
+ TraceTest.benchmark_with_locals
19
+ end)
20
+ trace_with_bindings.disable
21
+
22
+ puts "counts: #{trace_with_bindings.counts}" if options['counts']
23
+ end
24
+ end
25
+
26
+ class TraceTest # :nodoc:
27
+ class << self
28
+ def benchmark_with_locals
29
+ foo = false
30
+
31
+ (0..20_000).each do |index|
32
+ foo = TraceTest
33
+
34
+ change_frame_with_locals(foo, index)
35
+ end
36
+ end
37
+
38
+ def change_frame_with_locals(foo, _index)
39
+ foo.tap do |obj|
40
+ bar = 'bar'
41
+ hash = { :foo => obj, :bar => bar } # rubocop:disable Lint/UselessAssignment
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ class BenchmarkTraceWithBindings # :nodoc:
48
+ attr_reader :frames, :exception_frames, :options, :counts
49
+
50
+ def initialize(options = {})
51
+ @options = options
52
+ @frames = []
53
+ @exception_frames = []
54
+ @exception_signature = nil
55
+ @counts = init_counts({})
56
+ end
57
+
58
+ def init_counts(counts)
59
+ [:call, :b_call, :c_call, :class].each do |event|
60
+ counts[event] = 0
61
+ end
62
+ counts
63
+ end
64
+
65
+ def enable
66
+ return if options['disable']
67
+
68
+ trace_point.enable if defined?(TracePoint)
69
+ end
70
+
71
+ def disable
72
+ return if options['disable']
73
+
74
+ trace_point.disable if defined?(TracePoint)
75
+ end
76
+
77
+ def trace_point # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
78
+ return unless defined?(TracePoint)
79
+
80
+ @trace_point ||= TracePoint.new(:call, :return, :b_call, :b_return, :c_call, :c_return, :raise) do |tp|
81
+ next if options['hook_only']
82
+
83
+ case tp.event
84
+ when :call, :b_call, :c_call, :class
85
+ @counts[tp.event] += 1 if options['counts']
86
+ frame = options['frame'] ? frame(tp) : {}
87
+ frames.push frame if options['stack']
88
+ when :return, :b_return, :c_return, :end
89
+ frames.pop if options['stack']
90
+ end
91
+ end
92
+ end
93
+
94
+ def frame(trace)
95
+ {
96
+ :binding => trace.binding,
97
+ :defined_class => trace.defined_class,
98
+ :method_id => trace.method_id,
99
+ :path => trace.path,
100
+ :lineno => trace.lineno
101
+ }
102
+ end
103
+ end
@@ -1,21 +1,30 @@
1
1
  # -*- encoding: utf-8 -*-
2
+
2
3
  require File.expand_path('../lib/rollbar/version', __FILE__)
3
4
 
4
5
  Gem::Specification.new do |gem|
5
- is_jruby = defined?(JRUBY_VERSION) || (defined?(RUBY_ENGINE) && 'jruby' == RUBY_ENGINE)
6
+ _is_jruby = defined?(JRUBY_VERSION) || (defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby')
6
7
 
7
8
  gem.authors = ['Rollbar, Inc.']
8
9
  gem.email = ['support@rollbar.com']
9
- gem.description = %q{Easy and powerful exception tracking for Ruby}
10
+ gem.description = 'Easy and powerful exception tracking for Ruby'
10
11
  gem.executables = ['rollbar-rails-runner']
11
- gem.summary = %q{Reports exceptions to Rollbar}
12
+ gem.summary = 'Reports exceptions to Rollbar'
12
13
  gem.homepage = 'https://rollbar.com'
13
14
  gem.license = 'MIT'
14
15
  gem.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
15
16
  gem.name = 'rollbar'
16
17
  gem.require_paths = ['lib']
17
18
  gem.required_ruby_version = '>= 1.9.3'
18
- gem.version = Rollbar::VERSION
19
+ gem.version = Rollbar::VERSION
19
20
 
20
21
  gem.add_runtime_dependency 'multi_json'
22
+
23
+ if gem.respond_to?(:metadata)
24
+ gem.metadata['changelog_uri'] = 'https://github.com/rollbar/rollbar-gem/releases'
25
+ gem.metadata['source_code_uri'] = 'https://github.com/rollbar/rollbar-gem'
26
+ gem.metadata['bug_tracker_uri'] = 'https://github.com/rollbar/rollbar-gem/issues'
27
+ gem.metadata['homepage_uri'] = 'https://rollbar.com/'
28
+ gem.metadata['documentation_uri'] = 'https://docs.rollbar.com/docs/ruby'
29
+ end
21
30
  end
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: 2.19.2
4
+ version: 2.19.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rollbar, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-27 00:00:00.000000000 Z
11
+ date: 2019-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -85,6 +85,7 @@ files:
85
85
  - lib/rollbar/item.rb
86
86
  - lib/rollbar/item/backtrace.rb
87
87
  - lib/rollbar/item/frame.rb
88
+ - lib/rollbar/item/locals.rb
88
89
  - lib/rollbar/js.rb
89
90
  - lib/rollbar/json.rb
90
91
  - lib/rollbar/json/default.rb
@@ -102,6 +103,7 @@ files:
102
103
  - lib/rollbar/middleware/rails/show_exceptions.rb
103
104
  - lib/rollbar/middleware/sinatra.rb
104
105
  - lib/rollbar/notifier.rb
106
+ - lib/rollbar/notifier/trace_with_bindings.rb
105
107
  - lib/rollbar/plugin.rb
106
108
  - lib/rollbar/plugins.rb
107
109
  - lib/rollbar/plugins/active_job.rb
@@ -140,12 +142,18 @@ files:
140
142
  - lib/rollbar/util/ip_anonymizer.rb
141
143
  - lib/rollbar/util/ip_obfuscator.rb
142
144
  - lib/rollbar/version.rb
145
+ - lib/tasks/benchmark.rake
143
146
  - lib/tasks/tasks.rake
144
147
  - rollbar.gemspec
145
148
  homepage: https://rollbar.com
146
149
  licenses:
147
150
  - MIT
148
- metadata: {}
151
+ metadata:
152
+ changelog_uri: https://github.com/rollbar/rollbar-gem/releases
153
+ source_code_uri: https://github.com/rollbar/rollbar-gem
154
+ bug_tracker_uri: https://github.com/rollbar/rollbar-gem/issues
155
+ homepage_uri: https://rollbar.com/
156
+ documentation_uri: https://docs.rollbar.com/docs/ruby
149
157
  post_install_message:
150
158
  rdoc_options: []
151
159
  require_paths:
@@ -161,8 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
169
  - !ruby/object:Gem::Version
162
170
  version: '0'
163
171
  requirements: []
164
- rubyforge_project:
165
- rubygems_version: 2.5.1
172
+ rubygems_version: 3.0.1
166
173
  signing_key:
167
174
  specification_version: 4
168
175
  summary: Reports exceptions to Rollbar