rollbar 1.2.4 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +2 -2
- data/lib/rollbar/request_data_extractor.rb +41 -25
- data/lib/rollbar/version.rb +1 -1
- data/spec/rollbar/middleware/rack/builder_spec.rb +24 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76e11bf57c6ee70f276c3434d3e28c529db808cb
|
4
|
+
data.tar.gz: 676d76874780fc5656d1648c7ae156592308d50d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 049de0ce6da8c17708748cde99eb4c183caa8614eff619400ea019be2b1531edfd34a50fdb842f67063d71cd12c05c4e5b2b9ce8db5ad93d53726cc0d8758b79
|
7
|
+
data.tar.gz: 85d20e995d647bef3ec5eb4996de93147c7562a33ed03874f3e60ed5157c1d297f8ab82d8597e30bae6a8733cdd7b02beb900e2b2ade04d99df52b1b7f52f829
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
**1.2.5**
|
4
|
+
- Fix issues handling hashes, arrays, and other values as the raw POST body. See [#153](https://github.com/rollbar/rollbar-gem/pull/153)
|
5
|
+
|
3
6
|
**1.2.4**
|
4
7
|
- Fix issue where requiring 'rack' unnecessarily broke things in non-rack apps. See [#150](https://github.com/rollbar/rollbar-gem/pull/150)
|
5
8
|
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Rollbar notifier for Ruby [![Build Status](https://api.travis-ci.org/rollbar/rollbar-gem.svg?branch=v1.
|
1
|
+
# Rollbar notifier for Ruby [![Build Status](https://api.travis-ci.org/rollbar/rollbar-gem.svg?branch=v1.2.5)](https://travis-ci.org/rollbar/rollbar-gem/branches)
|
2
2
|
|
3
3
|
<!-- RemoveNext -->
|
4
4
|
Ruby gem for reporting exceptions, errors, and log messages to [Rollbar](https://rollbar.com).
|
@@ -9,7 +9,7 @@ Ruby gem for reporting exceptions, errors, and log messages to [Rollbar](https:/
|
|
9
9
|
|
10
10
|
Add this line to your application's Gemfile:
|
11
11
|
|
12
|
-
gem 'rollbar', '~> 1.
|
12
|
+
gem 'rollbar', '~> 1.2.5'
|
13
13
|
|
14
14
|
And then execute:
|
15
15
|
|
@@ -21,12 +21,12 @@ module Rollbar
|
|
21
21
|
request_params = rollbar_filtered_params(sensitive_params, rollbar_request_params(env))
|
22
22
|
get_params = rollbar_filtered_params(sensitive_params, rollbar_get_params(rack_req))
|
23
23
|
post_params = rollbar_filtered_params(sensitive_params, rollbar_post_params(rack_req))
|
24
|
-
|
24
|
+
raw_body_params = rollbar_filtered_params(sensitive_params, mergeable_raw_body_params(rack_req))
|
25
25
|
cookies = rollbar_filtered_params(sensitive_params, rollbar_request_cookies(rack_req))
|
26
26
|
session = rollbar_filtered_params(sensitive_params, env['rack.session.options'])
|
27
27
|
route_params = rollbar_filtered_params(sensitive_params, rollbar_route_params(env))
|
28
28
|
|
29
|
-
params = request_params.merge(get_params).merge(post_params).merge(
|
29
|
+
params = request_params.merge(get_params).merge(post_params).merge(raw_body_params)
|
30
30
|
|
31
31
|
data = {
|
32
32
|
:params => params,
|
@@ -48,6 +48,18 @@ module Rollbar
|
|
48
48
|
|
49
49
|
private
|
50
50
|
|
51
|
+
def mergeable_raw_body_params(rack_req)
|
52
|
+
raw_body_params = rollbar_raw_body_params(rack_req)
|
53
|
+
|
54
|
+
if raw_body_params.is_a?(Hash)
|
55
|
+
raw_body_params
|
56
|
+
elsif raw_body_params.is_a?(Array)
|
57
|
+
{ 'body.multi' => raw_body_params }
|
58
|
+
else
|
59
|
+
{ 'body.value' => raw_body_params }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
51
63
|
def rollbar_request_method(env)
|
52
64
|
env['REQUEST_METHOD'] || env[:method]
|
53
65
|
end
|
@@ -100,7 +112,10 @@ module Rollbar
|
|
100
112
|
{}
|
101
113
|
end
|
102
114
|
|
103
|
-
def
|
115
|
+
def rollbar_raw_body_params(rack_req)
|
116
|
+
correct_method = rack_req.post? || rack_req.put? || rack_req.patch?
|
117
|
+
|
118
|
+
return {} unless correct_method
|
104
119
|
return {} unless rack_req.env['CONTENT_TYPE'] =~ %r{application/json}i
|
105
120
|
|
106
121
|
MultiJson.decode(rack_req.body.read)
|
@@ -115,8 +130,11 @@ module Rollbar
|
|
115
130
|
end
|
116
131
|
|
117
132
|
def rollbar_route_params(env)
|
133
|
+
return {} unless defined?(Rails)
|
134
|
+
|
118
135
|
begin
|
119
136
|
route = ::Rails.application.routes.recognize_path(env['PATH_INFO'])
|
137
|
+
|
120
138
|
{
|
121
139
|
:controller => route[:controller],
|
122
140
|
:action => route[:action],
|
@@ -136,30 +154,28 @@ module Rollbar
|
|
136
154
|
def rollbar_filtered_params(sensitive_params, params)
|
137
155
|
sensitive_params_regexp = Regexp.new(sensitive_params.map{ |val| Regexp.escape(val.to_s).to_s }.join('|'), true)
|
138
156
|
|
139
|
-
|
140
|
-
{}
|
141
|
-
else
|
142
|
-
params.to_hash.inject({}) do |result, (key, value)|
|
143
|
-
if sensitive_params_regexp =~ key.to_s
|
144
|
-
result[key] = rollbar_scrubbed(value)
|
145
|
-
elsif value.is_a?(Hash)
|
146
|
-
result[key] = rollbar_filtered_params(sensitive_params, value)
|
147
|
-
elsif value.is_a?(Array)
|
148
|
-
result[key] = value.map do |v|
|
149
|
-
v.is_a?(Hash) ? rollbar_filtered_params(sensitive_params, v) : v
|
150
|
-
end
|
151
|
-
elsif ATTACHMENT_CLASSES.include?(value.class.name)
|
152
|
-
result[key] = {
|
153
|
-
:content_type => value.content_type,
|
154
|
-
:original_filename => value.original_filename,
|
155
|
-
:size => value.tempfile.size
|
156
|
-
} rescue 'Uploaded file'
|
157
|
-
else
|
158
|
-
result[key] = value
|
159
|
-
end
|
157
|
+
return {} unless params
|
160
158
|
|
161
|
-
|
159
|
+
params.to_hash.inject({}) do |result, (key, value)|
|
160
|
+
if sensitive_params_regexp =~ key.to_s
|
161
|
+
result[key] = rollbar_scrubbed(value)
|
162
|
+
elsif value.is_a?(Hash)
|
163
|
+
result[key] = rollbar_filtered_params(sensitive_params, value)
|
164
|
+
elsif value.is_a?(Array)
|
165
|
+
result[key] = value.map do |v|
|
166
|
+
v.is_a?(Hash) ? rollbar_filtered_params(sensitive_params, v) : v
|
167
|
+
end
|
168
|
+
elsif ATTACHMENT_CLASSES.include?(value.class.name)
|
169
|
+
result[key] = {
|
170
|
+
:content_type => value.content_type,
|
171
|
+
:original_filename => value.original_filename,
|
172
|
+
:size => value.tempfile.size
|
173
|
+
} rescue 'Uploaded file'
|
174
|
+
else
|
175
|
+
result[key] = value
|
162
176
|
end
|
177
|
+
|
178
|
+
result
|
163
179
|
end
|
164
180
|
end
|
165
181
|
|
data/lib/rollbar/version.rb
CHANGED
@@ -56,17 +56,33 @@ describe Rollbar::Middleware::Rack::Builder do
|
|
56
56
|
|
57
57
|
expect(Rollbar.last_report[:request][:params]).to be_eql(params)
|
58
58
|
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'with array POST parameters' do
|
62
|
+
let(:params) do
|
63
|
+
[{ :key => 'value'}, 'string', 10]
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'sends a body.multi key in params' do
|
67
|
+
expect do
|
68
|
+
request.post('/will_crash', :input => params.to_json, 'CONTENT_TYPE' => 'application/json')
|
69
|
+
end.to raise_error(exception)
|
70
|
+
|
71
|
+
reported_params = Rollbar.last_report[:request][:params]
|
72
|
+
expect(reported_params['body.multi']).to be_eql([{'key' => 'value'}, 'string', 10])
|
73
|
+
end
|
74
|
+
end
|
59
75
|
|
60
|
-
|
61
|
-
|
76
|
+
context 'with not array or hash POST parameters' do
|
77
|
+
let(:params) { 1000 }
|
62
78
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
79
|
+
it 'sends a body.multi key in params' do
|
80
|
+
expect do
|
81
|
+
request.post('/will_crash', :input => params.to_json, 'CONTENT_TYPE' => 'application/json')
|
82
|
+
end.to raise_error(exception)
|
67
83
|
|
68
|
-
|
69
|
-
|
84
|
+
reported_params = Rollbar.last_report[:request][:params]
|
85
|
+
expect(reported_params['body.value']).to be_eql(1000)
|
70
86
|
end
|
71
87
|
end
|
72
88
|
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: 1.2.
|
4
|
+
version: 1.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rollbar, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|