rollbar 2.4.0 → 2.5.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.
- data/.travis.yml +2 -2
- data/CHANGELOG.md +11 -0
- data/README.md +12 -2
- data/gemfiles/rails30.gemfile +3 -0
- data/lib/rollbar.rb +11 -1
- data/lib/rollbar/configuration.rb +8 -0
- data/lib/rollbar/json.rb +4 -3
- data/lib/rollbar/language_support.rb +35 -0
- data/lib/rollbar/request_data_extractor.rb +20 -4
- data/lib/rollbar/scrubbers.rb +4 -0
- data/lib/rollbar/scrubbers/url.rb +93 -0
- data/lib/rollbar/version.rb +1 -1
- data/spec/cacert.pem +3988 -0
- data/spec/controllers/home_controller_spec.rb +38 -17
- data/spec/rollbar/json_spec.rb +5 -0
- data/spec/rollbar/request_data_extractor_spec.rb +61 -0
- data/spec/rollbar/scrubbers/url_spec.rb +103 -0
- metadata +194 -179
- checksums.yaml +0 -7
@@ -67,10 +67,9 @@ describe HomeController do
|
|
67
67
|
}
|
68
68
|
|
69
69
|
filtered = controller.send( :rollbar_headers, headers )
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
}
|
70
|
+
|
71
|
+
expect(filtered['Authorization']).to match(/\**/)
|
72
|
+
expect(filtered['User-Agent']).to be_eql('spec')
|
74
73
|
end
|
75
74
|
|
76
75
|
it 'should filter custom headers' do
|
@@ -85,11 +84,9 @@ describe HomeController do
|
|
85
84
|
}
|
86
85
|
|
87
86
|
filtered = controller.send( :rollbar_headers, headers )
|
88
|
-
filtered.
|
89
|
-
|
90
|
-
|
91
|
-
"Content-Type" => "text/html"
|
92
|
-
}
|
87
|
+
expect(filtered['Auth']).to match(/\**/)
|
88
|
+
expect(filtered['Token']).to match(/\**/)
|
89
|
+
expect(filtered['Content-Type']).to be_eql('text/html')
|
93
90
|
end
|
94
91
|
|
95
92
|
end
|
@@ -188,11 +185,11 @@ describe HomeController do
|
|
188
185
|
|
189
186
|
filtered = Rollbar.last_report[:request][:params]
|
190
187
|
|
191
|
-
filtered["passwd"].
|
192
|
-
filtered["password"].
|
193
|
-
filtered["secret"].
|
194
|
-
filtered["notpass"].
|
195
|
-
filtered["secret_token"].
|
188
|
+
expect(filtered["passwd"]).to match(/\**/)
|
189
|
+
expect(filtered["password"]).to match(/\**/)
|
190
|
+
expect(filtered["secret"]).to match(/\**/)
|
191
|
+
expect(filtered["notpass"]).to match(/\**/)
|
192
|
+
expect(filtered["secret_token"]).to match(/\**/)
|
196
193
|
end
|
197
194
|
|
198
195
|
it "should scrub custom scrub_fields" do
|
@@ -214,9 +211,9 @@ describe HomeController do
|
|
214
211
|
filtered["passwd"].should == "visible"
|
215
212
|
# config.filter_parameters is set to [:password] in
|
216
213
|
# spec/dummyapp/config/application.rb
|
217
|
-
filtered["password"].
|
218
|
-
filtered["secret"].
|
219
|
-
filtered["notpass"].
|
214
|
+
expect(filtered["password"]).to match(/\**/)
|
215
|
+
expect(filtered["secret"]).to match(/\**/)
|
216
|
+
expect(filtered["notpass"]).to match(/\**/)
|
220
217
|
end
|
221
218
|
end
|
222
219
|
|
@@ -391,6 +388,30 @@ describe HomeController do
|
|
391
388
|
end
|
392
389
|
end
|
393
390
|
|
391
|
+
context 'with params to be scrubed from URL', :type => :request do
|
392
|
+
next unless Rollbar::LanguageSupport.can_scrub_url?
|
393
|
+
|
394
|
+
before do
|
395
|
+
Rollbar.configure do |config|
|
396
|
+
config.scrub_fields = [:password]
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
let(:headers) do
|
401
|
+
{
|
402
|
+
'ORIGINAL_FULLPATH' => '/cause_exception?password=my-secret-password'
|
403
|
+
}
|
404
|
+
end
|
405
|
+
|
406
|
+
it 'scrubs sensible data from URL' do
|
407
|
+
expect { get '/cause_exception', { :password => 'my-secret-password' }, headers }.to raise_exception
|
408
|
+
|
409
|
+
request_data = Rollbar.last_report[:request]
|
410
|
+
|
411
|
+
expect(request_data[:url]).to match('http:\/\/www.example.com\/cause_exception\?password=\*{3,8}')
|
412
|
+
end
|
413
|
+
end
|
414
|
+
|
394
415
|
after(:each) do
|
395
416
|
Rollbar.configure do |config|
|
396
417
|
config.logger = ::Rails.logger
|
data/spec/rollbar/json_spec.rb
CHANGED
@@ -24,6 +24,11 @@ module MultiJson
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
module MissingCustomOptions
|
28
|
+
# Consider the fact that there's MultiJson::Adapters::Yajl but not
|
29
|
+
# Rollbar::JSON::Yajl, it should not look for ::Yajl but only
|
30
|
+
# Rollbar::JSON::Yajl.
|
31
|
+
end
|
27
32
|
|
28
33
|
describe Rollbar::JSON do
|
29
34
|
let(:payload) do
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rack/mock'
|
3
|
+
|
4
|
+
require 'rollbar/request_data_extractor'
|
5
|
+
|
6
|
+
class ExtractorDummy
|
7
|
+
include Rollbar::RequestDataExtractor
|
8
|
+
end
|
9
|
+
|
10
|
+
describe Rollbar::RequestDataExtractor do
|
11
|
+
subject { ExtractorDummy.new }
|
12
|
+
|
13
|
+
let(:env) do
|
14
|
+
Rack::MockRequest.env_for('/', 'HTTP_HOST' => 'localhost:81', 'HTTP_X_FORWARDED_HOST' => 'example.org:9292')
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#extract_request_data_from_rack' do
|
18
|
+
let(:scrubber) { double }
|
19
|
+
|
20
|
+
it 'returns a Hash object' do
|
21
|
+
scrubber_config = {
|
22
|
+
:scrub_fields => kind_of(Array),
|
23
|
+
:scrub_user => Rollbar.configuration.scrub_user,
|
24
|
+
:scrub_password => Rollbar.configuration.scrub_password,
|
25
|
+
:randomize_scrub_length => Rollbar.configuration.randomize_scrub_length
|
26
|
+
}
|
27
|
+
expect(Rollbar::Scrubbers::URL).to receive(:new).with(scrubber_config).and_return(scrubber)
|
28
|
+
expect(scrubber).to receive(:call).with(kind_of(String))
|
29
|
+
|
30
|
+
result = subject.extract_request_data_from_rack(env)
|
31
|
+
|
32
|
+
expect(result).to be_kind_of(Hash)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#rollbar_scrubbed_value' do
|
37
|
+
context 'with random scrub length' do
|
38
|
+
before do
|
39
|
+
allow(Rollbar.configuration).to receive(:randomize_scrub_length).and_return(true)
|
40
|
+
end
|
41
|
+
|
42
|
+
let(:value) { 'herecomesaverylongvalue' }
|
43
|
+
|
44
|
+
it 'randomizes the scrubbed string' do
|
45
|
+
expect(subject.rollbar_scrubbed(value)).to match(/\*{3,8}/)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'with no-random scrub length' do
|
50
|
+
before do
|
51
|
+
allow(Rollbar.configuration).to receive(:randomize_scrub_length).and_return(false)
|
52
|
+
end
|
53
|
+
|
54
|
+
let(:value) { 'herecomesaverylongvalue' }
|
55
|
+
|
56
|
+
it 'randomizes the scrubbed string' do
|
57
|
+
expect(subject.rollbar_scrubbed(value)).to match(/\*{#{value.length}}/)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rollbar/language_support'
|
3
|
+
require 'rollbar/scrubbers/url'
|
4
|
+
|
5
|
+
describe Rollbar::Scrubbers::URL do
|
6
|
+
let(:options) do
|
7
|
+
{ :scrub_fields => [:password, :secret],
|
8
|
+
:scrub_user => false,
|
9
|
+
:scrub_password => false,
|
10
|
+
:randomize_scrub_length => true
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
subject { described_class.new(options) }
|
15
|
+
|
16
|
+
describe '#call' do
|
17
|
+
context 'cannot scrub URLs' do
|
18
|
+
next if Rollbar::LanguageSupport.can_scrub_url?
|
19
|
+
|
20
|
+
let(:url) { 'http://user:password@foo.com/some-interesting-path#fragment' }
|
21
|
+
|
22
|
+
it 'returns the URL without any change' do
|
23
|
+
expect(subject.call(url)).to be_eql(url)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'with ruby different from 1.8' do
|
28
|
+
next unless Rollbar::LanguageSupport.can_scrub_url?
|
29
|
+
|
30
|
+
context 'without data to be scrubbed' do
|
31
|
+
let(:url) { 'http://user:password@foo.com/some-interesting-path#fragment' }
|
32
|
+
|
33
|
+
it 'returns the URL without any change' do
|
34
|
+
expect(subject.call(url)).to be_eql(url)
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'with arrays in params' do
|
38
|
+
let(:url) { 'http://user:password@foo.com/some-interesting-path?foo[]=1&foo[]=2' }
|
39
|
+
|
40
|
+
it 'returns the URL without any change' do
|
41
|
+
expect(subject.call(url)).to be_eql(url)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'scrubbing user and password' do
|
47
|
+
let(:options) do
|
48
|
+
{
|
49
|
+
:scrub_fields => [],
|
50
|
+
:scrub_password => true,
|
51
|
+
:scrub_user => true
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
let(:url) { 'http://user:password@foo.com/some-interesting-path#fragment' }
|
56
|
+
|
57
|
+
it 'returns the URL without any change' do
|
58
|
+
expected_url = /http:\/\/\*{3,8}:\*{3,8}@foo.com\/some-interesting\-path#fragment/
|
59
|
+
|
60
|
+
expect(subject.call(url)).to match(expected_url)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'with params to be filtered' do
|
65
|
+
let(:url) { 'http://foo.com/some-interesting-path?foo=bar&password=mypassword&secret=somevalue#fragment' }
|
66
|
+
|
67
|
+
it 'returns the URL with some params filtered' do
|
68
|
+
expected_url = /http:\/\/foo.com\/some-interesting-path\?foo=bar&password=\*{3,8}&secret=\*{3,8}#fragment/
|
69
|
+
|
70
|
+
expect(subject.call(url)).to match(expected_url)
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'having array params' do
|
74
|
+
let(:url) { 'http://foo.com/some-interesting-path?foo=bar&password[]=mypassword&password[]=otherpassword&secret=somevalue#fragment' }
|
75
|
+
|
76
|
+
it 'returns the URL with some params filtered' do
|
77
|
+
expected_url = /http:\/\/foo.com\/some-interesting-path\?foo=bar&password\[\]=\*{3,8}&password\[\]=\*{3,8}&secret=\*{3,8}#fragment/
|
78
|
+
|
79
|
+
expect(subject.call(url)).to match(expected_url)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'with no-random scrub length' do
|
85
|
+
let(:options) do
|
86
|
+
{ :scrub_fields => [:password, :secret],
|
87
|
+
:scrub_user => false,
|
88
|
+
:scrub_password => false,
|
89
|
+
:randomize_scrub_length => false
|
90
|
+
}
|
91
|
+
end
|
92
|
+
let(:password) { 'longpasswordishere' }
|
93
|
+
let(:url) { "http://foo.com/some-interesting-path?foo=bar&password=#{password}#fragment" }
|
94
|
+
|
95
|
+
it 'scrubs with same length than the scrubbed param' do
|
96
|
+
expected_url = /http:\/\/foo.com\/some-interesting-path\?foo=bar&password=\*{#{password.length}}#fragment/
|
97
|
+
|
98
|
+
expect(subject.call(url)).to match(expected_url)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
metadata
CHANGED
@@ -1,221 +1,217 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollbar
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 2.5.0
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- Rollbar, Inc.
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
|
18
|
+
date: 2015-10-24 00:00:00 +02:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
14
22
|
name: rails
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 3.0.0
|
20
|
-
type: :development
|
21
23
|
prerelease: false
|
22
|
-
|
23
|
-
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
24
27
|
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 7
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 0
|
33
|
+
- 0
|
26
34
|
version: 3.0.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec-rails
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 2.14.0
|
34
35
|
type: :development
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rspec-rails
|
35
39
|
prerelease: false
|
36
|
-
|
37
|
-
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
38
43
|
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 55
|
46
|
+
segments:
|
47
|
+
- 2
|
48
|
+
- 14
|
49
|
+
- 0
|
40
50
|
version: 2.14.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: database_cleaner
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 1.0.0
|
48
51
|
type: :development
|
52
|
+
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: database_cleaner
|
49
55
|
prerelease: false
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 23
|
62
|
+
segments:
|
63
|
+
- 1
|
64
|
+
- 0
|
65
|
+
- 0
|
54
66
|
version: 1.0.0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: girl_friday
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.11.1
|
62
67
|
type: :development
|
68
|
+
version_requirements: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: girl_friday
|
63
71
|
prerelease: false
|
64
|
-
|
65
|
-
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
66
75
|
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 49
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
- 11
|
81
|
+
- 1
|
68
82
|
version: 0.11.1
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: sucker_punch
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 1.0.0
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 1.0.0
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: sidekiq
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 2.13.0
|
90
83
|
type: :development
|
91
|
-
|
92
|
-
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 2.13.0
|
97
|
-
- !ruby/object:Gem::Dependency
|
84
|
+
version_requirements: *id004
|
85
|
+
- !ruby/object:Gem::Dependency
|
98
86
|
name: genspec
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.2.8
|
104
|
-
type: :development
|
105
87
|
prerelease: false
|
106
|
-
|
107
|
-
|
88
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
108
91
|
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
hash: 7
|
94
|
+
segments:
|
95
|
+
- 0
|
96
|
+
- 2
|
97
|
+
- 8
|
110
98
|
version: 0.2.8
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: sinatra
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
99
|
type: :development
|
100
|
+
version_requirements: *id005
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: sinatra
|
119
103
|
prerelease: false
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: resque
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
104
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
129
107
|
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
hash: 3
|
110
|
+
segments:
|
111
|
+
- 0
|
112
|
+
version: "0"
|
132
113
|
type: :development
|
114
|
+
version_requirements: *id006
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: resque
|
133
117
|
prerelease: false
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: delayed_job
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
118
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
143
121
|
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
hash: 3
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
version: "0"
|
146
127
|
type: :development
|
128
|
+
version_requirements: *id007
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: delayed_job
|
147
131
|
prerelease: false
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: rake
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
132
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
133
|
+
none: false
|
134
|
+
requirements:
|
157
135
|
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
hash: 3
|
138
|
+
segments:
|
139
|
+
- 0
|
140
|
+
version: "0"
|
160
141
|
type: :development
|
142
|
+
version_requirements: *id008
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: rake
|
161
145
|
prerelease: false
|
162
|
-
|
163
|
-
|
146
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
164
149
|
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
hash: 59
|
152
|
+
segments:
|
153
|
+
- 0
|
154
|
+
- 9
|
155
|
+
- 0
|
166
156
|
version: 0.9.0
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: redis
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
157
|
type: :development
|
158
|
+
version_requirements: *id009
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: redis
|
175
161
|
prerelease: false
|
176
|
-
|
177
|
-
|
162
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
163
|
+
none: false
|
164
|
+
requirements:
|
178
165
|
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
|
181
|
-
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
hash: 3
|
168
|
+
segments:
|
169
|
+
- 0
|
170
|
+
version: "0"
|
171
|
+
type: :development
|
172
|
+
version_requirements: *id010
|
173
|
+
- !ruby/object:Gem::Dependency
|
182
174
|
name: multi_json
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - ">="
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
type: :runtime
|
189
175
|
prerelease: false
|
190
|
-
|
191
|
-
|
176
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
192
179
|
- - ">="
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
|
195
|
-
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
hash: 3
|
182
|
+
segments:
|
183
|
+
- 0
|
184
|
+
version: "0"
|
185
|
+
type: :runtime
|
186
|
+
version_requirements: *id011
|
187
|
+
- !ruby/object:Gem::Dependency
|
196
188
|
name: oj
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: 2.12.14
|
202
|
-
type: :development
|
203
189
|
prerelease: false
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
190
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
191
|
+
none: false
|
192
|
+
requirements:
|
193
|
+
- - ~>
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
hash: 35
|
196
|
+
segments:
|
197
|
+
- 2
|
198
|
+
- 12
|
199
|
+
- 14
|
208
200
|
version: 2.12.14
|
201
|
+
type: :development
|
202
|
+
version_requirements: *id012
|
209
203
|
description: Easy and powerful exception tracking for Ruby
|
210
|
-
email:
|
204
|
+
email:
|
211
205
|
- support@rollbar.com
|
212
|
-
executables:
|
206
|
+
executables:
|
213
207
|
- rollbar-rails-runner
|
214
208
|
extensions: []
|
209
|
+
|
215
210
|
extra_rdoc_files: []
|
216
|
-
|
217
|
-
|
218
|
-
-
|
211
|
+
|
212
|
+
files:
|
213
|
+
- .gitignore
|
214
|
+
- .travis.yml
|
219
215
|
- Appraisals
|
220
216
|
- CHANGELOG.md
|
221
217
|
- Gemfile
|
@@ -257,6 +253,7 @@ files:
|
|
257
253
|
- lib/rollbar/json.rb
|
258
254
|
- lib/rollbar/json/default.rb
|
259
255
|
- lib/rollbar/json/oj.rb
|
256
|
+
- lib/rollbar/language_support.rb
|
260
257
|
- lib/rollbar/logger_proxy.rb
|
261
258
|
- lib/rollbar/middleware/rack/builder.rb
|
262
259
|
- lib/rollbar/middleware/rack/test_session.rb
|
@@ -270,6 +267,8 @@ files:
|
|
270
267
|
- lib/rollbar/rake.rb
|
271
268
|
- lib/rollbar/rake_tasks.rb
|
272
269
|
- lib/rollbar/request_data_extractor.rb
|
270
|
+
- lib/rollbar/scrubbers.rb
|
271
|
+
- lib/rollbar/scrubbers/url.rb
|
273
272
|
- lib/rollbar/sidekiq.rb
|
274
273
|
- lib/rollbar/tasks/rollbar.cap
|
275
274
|
- lib/rollbar/truncation.rb
|
@@ -282,6 +281,7 @@ files:
|
|
282
281
|
- lib/rollbar/util/hash.rb
|
283
282
|
- lib/rollbar/version.rb
|
284
283
|
- rollbar.gemspec
|
284
|
+
- spec/cacert.pem
|
285
285
|
- spec/controllers/home_controller_spec.rb
|
286
286
|
- spec/delay/sidekiq_spec.rb
|
287
287
|
- spec/delay/sucker_punch_spec.rb
|
@@ -358,6 +358,8 @@ files:
|
|
358
358
|
- spec/rollbar/middleware/rack/builder_spec.rb
|
359
359
|
- spec/rollbar/middleware/sinatra_spec.rb
|
360
360
|
- spec/rollbar/rake_spec.rb
|
361
|
+
- spec/rollbar/request_data_extractor_spec.rb
|
362
|
+
- spec/rollbar/scrubbers/url_spec.rb
|
361
363
|
- spec/rollbar/sidekiq_spec.rb
|
362
364
|
- spec/rollbar/truncation/frames_strategy_spec.rb
|
363
365
|
- spec/rollbar/truncation/min_body_strategy_spec.rb
|
@@ -374,31 +376,42 @@ files:
|
|
374
376
|
- spec/support/helpers.rb
|
375
377
|
- spec/support/notifier_helpers.rb
|
376
378
|
- spec/support/shared_contexts.rb
|
379
|
+
has_rdoc: true
|
377
380
|
homepage: https://rollbar.com
|
378
|
-
licenses:
|
381
|
+
licenses:
|
379
382
|
- MIT
|
380
|
-
metadata: {}
|
381
383
|
post_install_message:
|
382
384
|
rdoc_options: []
|
383
|
-
|
385
|
+
|
386
|
+
require_paths:
|
384
387
|
- lib
|
385
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
386
|
-
|
388
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
389
|
+
none: false
|
390
|
+
requirements:
|
387
391
|
- - ">="
|
388
|
-
- !ruby/object:Gem::Version
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
+
- !ruby/object:Gem::Version
|
393
|
+
hash: 3
|
394
|
+
segments:
|
395
|
+
- 0
|
396
|
+
version: "0"
|
397
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
398
|
+
none: false
|
399
|
+
requirements:
|
392
400
|
- - ">="
|
393
|
-
- !ruby/object:Gem::Version
|
394
|
-
|
401
|
+
- !ruby/object:Gem::Version
|
402
|
+
hash: 3
|
403
|
+
segments:
|
404
|
+
- 0
|
405
|
+
version: "0"
|
395
406
|
requirements: []
|
407
|
+
|
396
408
|
rubyforge_project:
|
397
|
-
rubygems_version:
|
409
|
+
rubygems_version: 1.6.2
|
398
410
|
signing_key:
|
399
|
-
specification_version:
|
411
|
+
specification_version: 3
|
400
412
|
summary: Reports exceptions to Rollbar
|
401
|
-
test_files:
|
413
|
+
test_files:
|
414
|
+
- spec/cacert.pem
|
402
415
|
- spec/controllers/home_controller_spec.rb
|
403
416
|
- spec/delay/sidekiq_spec.rb
|
404
417
|
- spec/delay/sucker_punch_spec.rb
|
@@ -475,6 +488,8 @@ test_files:
|
|
475
488
|
- spec/rollbar/middleware/rack/builder_spec.rb
|
476
489
|
- spec/rollbar/middleware/sinatra_spec.rb
|
477
490
|
- spec/rollbar/rake_spec.rb
|
491
|
+
- spec/rollbar/request_data_extractor_spec.rb
|
492
|
+
- spec/rollbar/scrubbers/url_spec.rb
|
478
493
|
- spec/rollbar/sidekiq_spec.rb
|
479
494
|
- spec/rollbar/truncation/frames_strategy_spec.rb
|
480
495
|
- spec/rollbar/truncation/min_body_strategy_spec.rb
|