rollbar 2.19.2 → 2.19.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +27 -0
- data/Appraisals +10 -10
- data/Gemfile +2 -0
- data/README.md +4 -1
- data/Rakefile +0 -0
- data/data/rollbar.snippet.js +1 -1
- data/gemfiles/rails30.gemfile +2 -0
- data/gemfiles/rails31.gemfile +2 -0
- data/gemfiles/rails32.gemfile +2 -0
- data/gemfiles/rails40.gemfile +2 -0
- data/gemfiles/rails41.gemfile +2 -0
- data/gemfiles/rails42.gemfile +2 -0
- data/gemfiles/rails50.gemfile +2 -0
- data/gemfiles/rails51.gemfile +2 -0
- data/gemfiles/rails52.gemfile +2 -0
- data/gemfiles/ruby_1_8_and_1_9_2.gemfile +2 -0
- data/lib/generators/rollbar/rollbar_generator.rb +1 -1
- data/lib/rails/rollbar_runner.rb +1 -1
- data/lib/rollbar.rb +2 -3
- data/lib/rollbar/capistrano3.rb +6 -3
- data/lib/rollbar/capistrano_tasks.rb +13 -15
- data/lib/rollbar/configuration.rb +10 -8
- data/lib/rollbar/delay/girl_friday.rb +2 -2
- data/lib/rollbar/delay/resque.rb +4 -6
- data/lib/rollbar/delay/sidekiq.rb +6 -10
- data/lib/rollbar/delay/sucker_punch.rb +17 -19
- data/lib/rollbar/delay/thread.rb +2 -2
- data/lib/rollbar/deploy.rb +47 -30
- data/lib/rollbar/encoding/encoder.rb +9 -9
- data/lib/rollbar/item.rb +7 -7
- data/lib/rollbar/item/backtrace.rb +4 -4
- data/lib/rollbar/item/frame.rb +7 -1
- data/lib/rollbar/item/locals.rb +56 -0
- data/lib/rollbar/json.rb +5 -2
- data/lib/rollbar/json/default.rb +1 -1
- data/lib/rollbar/json/oj.rb +1 -1
- data/lib/rollbar/language_support.rb +1 -1
- data/lib/rollbar/lazy_store.rb +5 -5
- data/lib/rollbar/logger.rb +1 -0
- data/lib/rollbar/logger_proxy.rb +1 -1
- data/lib/rollbar/middleware/js.rb +15 -15
- data/lib/rollbar/middleware/rack.rb +4 -1
- data/lib/rollbar/middleware/rails/rollbar.rb +10 -1
- data/lib/rollbar/notifier.rb +40 -15
- data/lib/rollbar/notifier/trace_with_bindings.rb +65 -0
- data/lib/rollbar/plugin.rb +54 -6
- data/lib/rollbar/plugins.rb +7 -1
- data/lib/rollbar/plugins/basic_socket.rb +21 -6
- data/lib/rollbar/plugins/delayed_job/job_data.rb +3 -3
- data/lib/rollbar/plugins/delayed_job/plugin.rb +2 -2
- data/lib/rollbar/plugins/goalie.rb +11 -3
- data/lib/rollbar/plugins/rails/controller_methods.rb +15 -3
- data/lib/rollbar/plugins/rake.rb +2 -2
- data/lib/rollbar/plugins/sidekiq/plugin.rb +5 -4
- data/lib/rollbar/rake_tasks.rb +2 -2
- data/lib/rollbar/request_data_extractor.rb +21 -18
- data/lib/rollbar/scrubbers.rb +7 -3
- data/lib/rollbar/scrubbers/params.rb +17 -16
- data/lib/rollbar/scrubbers/url.rb +8 -3
- data/lib/rollbar/truncation.rb +1 -1
- data/lib/rollbar/truncation/strings_strategy.rb +1 -1
- data/lib/rollbar/util/ip_anonymizer.rb +8 -7
- data/lib/rollbar/util/ip_obfuscator.rb +1 -1
- data/lib/rollbar/version.rb +1 -1
- data/lib/tasks/benchmark.rake +103 -0
- data/rollbar.gemspec +13 -4
- metadata +12 -5
data/lib/rollbar/truncation.rb
CHANGED
@@ -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
|
data/lib/rollbar/version.rb
CHANGED
@@ -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
|
data/rollbar.gemspec
CHANGED
@@ -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
|
-
|
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 =
|
10
|
+
gem.description = 'Easy and powerful exception tracking for Ruby'
|
10
11
|
gem.executables = ['rollbar-rails-runner']
|
11
|
-
gem.summary =
|
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
|
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.
|
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-
|
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
|
-
|
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
|