raygun4ruby 1.5.0 → 2.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -12
- data/lib/raygun/client.rb +14 -2
- data/lib/raygun/configuration.rb +6 -1
- data/lib/raygun/version.rb +1 -1
- data/test/unit/client_test.rb +31 -8
- data/test/unit/configuration_test.rb +4 -0
- 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: 558ace0abc94bf42933ffec0ae4327a8cfba09a2
|
4
|
+
data.tar.gz: a27eb894bc5e0079d7b10b40463c5e47c82b21ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c390cf858fa96eef0e2a42174c0098cefda944dc9d4e1ea85ce2c06b4e9e0795170fa409ff726ac2d5431aa2a928803a61c5d963a71e472bd0ebfa793f31f62f
|
7
|
+
data.tar.gz: 6d334a8df11475639df6ad6eebdedc7d7301d61915392179b711ee45030ec2ec8f9e0fc411794e5ea53ce5bac90447af489925298e325a83760aea6bcf1dd21c
|
data/CHANGELOG.md
CHANGED
@@ -1,34 +1,40 @@
|
|
1
|
+
## 2.0.0 (20/04/2017)
|
2
|
+
|
3
|
+
Bugfixes:
|
4
|
+
- Fix broken handling of raw request body reading in Rack applications ([#116](https://github.com/MindscapeHQ/raygun4ruby/pull/116))
|
5
|
+
- This is a breaking change to how raw data was being read before so it requires a major version bump
|
6
|
+
- Raw request data reading is now disabled by default and can be enabled via the `record_raw_data` configuration option
|
1
7
|
## 1.5.0 (16/03/2017)
|
2
8
|
|
3
9
|
Features
|
4
|
-
- Send utcOffset with Raygun payload to calculate local server time in Raygun dashboard
|
10
|
+
- Send utcOffset with Raygun payload to calculate local server time in Raygun dashboard ([#112](https://github.com/MindscapeHQ/raygun4ruby/pull/112))
|
5
11
|
|
6
12
|
## 1.4.0 (14/03/2017)
|
7
13
|
|
8
14
|
Features:
|
9
|
-
- Raygun API url is now configurable via `Configuration.api_url`
|
10
|
-
- Added support for `Exception#cause` to be tracked as `innerError` on Raygun. Only supported on Ruby >= 2.1
|
15
|
+
- Raygun API url is now configurable via `Configuration.api_url` ([#111](https://github.com/MindscapeHQ/raygun4ruby/pull/111))
|
16
|
+
- Added support for `Exception#cause` to be tracked as `innerError` on Raygun. Only supported on Ruby >= 2.1 ([#107](https://github.com/MindscapeHQ/raygun4ruby/pull/107))
|
11
17
|
|
12
18
|
## 1.3.0 (10/03/2017)
|
13
19
|
|
14
20
|
Features:
|
15
|
-
- Improve affected user handling to let you specify all Raygun parameters, identifier, email, first name, full name and uuid. See [README.md](https://github.com/MindscapeHQ/raygun4ruby#affected-user-tracking) for details
|
16
|
-
- Pass a user object as the third parameter to `Raygun.track_exception` to have affected user tracking for manually tracked exceptions, see the above link for more information on configuring this
|
17
|
-
- If the exception instance responds to `:raygun_custom_data` that method will be called and the return value merged into the `custom_data` hash sent to Raygun. For convenience a `Raygun::Error` class is provided that takes this custom data as a second argument
|
18
|
-
- Allowed `Configuration.custom_data` to be set to a proc to allow a global custom data hook for all exceptions. It is passed as arguments the exception and the environment hash
|
19
|
-
- Added `Configuration.debug` to enable logging the reason why an exception was not reported
|
21
|
+
- Improve affected user handling to let you specify all Raygun parameters, identifier, email, first name, full name and uuid. See [README.md](https://github.com/MindscapeHQ/raygun4ruby#affected-user-tracking) for details ([#34](https://github.com/MindscapeHQ/raygun4ruby/pull/34))
|
22
|
+
- Pass a user object as the third parameter to `Raygun.track_exception` to have affected user tracking for manually tracked exceptions, see the above link for more information on configuring this ([#106](https://github.com/MindscapeHQ/raygun4ruby/pull/106))
|
23
|
+
- If the exception instance responds to `:raygun_custom_data` that method will be called and the return value merged into the `custom_data` hash sent to Raygun. For convenience a `Raygun::Error` class is provided that takes this custom data as a second argument ([#101](https://github.com/MindscapeHQ/raygun4ruby/pull/101))
|
24
|
+
- Allowed `Configuration.custom_data` to be set to a proc to allow a global custom data hook for all exceptions. It is passed as arguments the exception and the environment hash ([#108](https://github.com/MindscapeHQ/raygun4ruby/pull/108))
|
25
|
+
- Added `Configuration.debug` to enable logging the reason why an exception was not reported ([#109](https://github.com/MindscapeHQ/raygun4ruby/pull/109))
|
20
26
|
|
21
27
|
## 1.2.1 (09/03/2017)
|
22
28
|
|
23
29
|
Bugfixes:
|
24
|
-
- dup input hashes before applying whitelist filtering, previously this was modifying the contents of `action_dispatch.request.parameters`
|
30
|
+
- dup input hashes before applying whitelist filtering, previously this was modifying the contents of `action_dispatch.request.parameters` ([#105](https://github.com/MindscapeHQ/raygun4ruby/pull/105))
|
25
31
|
|
26
32
|
## 1.2.0 (09/03/2017)
|
27
33
|
|
28
34
|
Features:
|
29
|
-
- Added two new configuration options, `filter_payload_with_whitelist` and `whitelist_payload_shape`
|
35
|
+
- Added two new configuration options, `filter_payload_with_whitelist` and `whitelist_payload_shape` ([#100](https://github.com/MindscapeHQ/raygun4ruby/pull/100))
|
30
36
|
- See [README.md](https://github.com/MindscapeHQ/raygun4ruby#filtering-the-payload-by-whitelist) for an example of how to use them
|
31
|
-
- When raygun4ruby encounters an exception trying to track an exception it will try once to send that exception to Raygun so you are notified
|
37
|
+
- When raygun4ruby encounters an exception trying to track an exception it will try once to send that exception to Raygun so you are notified ([#104](https://github.com/MindscapeHQ/raygun4ruby/pull/104))
|
32
38
|
|
33
39
|
Bugfixes:
|
34
|
-
- raygun4ruby will no longer crash and suppress app exceptions when the API key is not configured
|
40
|
+
- raygun4ruby will no longer crash and suppress app exceptions when the API key is not configured ([#87](https://github.com/MindscapeHQ/raygun4ruby/pull/87))
|
data/lib/raygun/client.rb
CHANGED
@@ -132,9 +132,21 @@ module Raygun
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def raw_data(rack_env)
|
135
|
+
return unless Raygun.configuration.record_raw_data
|
136
|
+
|
135
137
|
request = Rack::Request.new(rack_env)
|
136
|
-
|
137
|
-
|
138
|
+
input = rack_env['rack.input']
|
139
|
+
|
140
|
+
if input && !request.form_data?
|
141
|
+
current_position = input.pos
|
142
|
+
input.rewind
|
143
|
+
|
144
|
+
body = (input.read || '').slice(0, 4096)
|
145
|
+
input.seek(current_position)
|
146
|
+
|
147
|
+
body
|
148
|
+
else
|
149
|
+
{}
|
138
150
|
end
|
139
151
|
end
|
140
152
|
|
data/lib/raygun/configuration.rb
CHANGED
@@ -70,6 +70,10 @@ module Raygun
|
|
70
70
|
# Override this if you wish to connect to a different Raygun API than the standard one
|
71
71
|
config_option :api_url
|
72
72
|
|
73
|
+
# Should Raygun include the raw request body in the payload? This will not include
|
74
|
+
# form submissions and will not be filtered by the blacklist
|
75
|
+
config_option :record_raw_data
|
76
|
+
|
73
77
|
# Exception classes to ignore by default
|
74
78
|
IGNORE_DEFAULT = ['ActiveRecord::RecordNotFound',
|
75
79
|
'ActionController::RoutingError',
|
@@ -119,7 +123,8 @@ module Raygun
|
|
119
123
|
whitelist_payload_shape: DEFAULT_WHITELIST_PAYLOAD_SHAPE,
|
120
124
|
proxy_settings: {},
|
121
125
|
debug: false,
|
122
|
-
api_url: 'https://api.raygun.io/'
|
126
|
+
api_url: 'https://api.raygun.io/',
|
127
|
+
record_raw_data: false
|
123
128
|
})
|
124
129
|
end
|
125
130
|
|
data/lib/raygun/version.rb
CHANGED
data/test/unit/client_test.rb
CHANGED
@@ -29,6 +29,7 @@ class ClientTest < Raygun::UnitTest
|
|
29
29
|
def setup
|
30
30
|
super
|
31
31
|
@client = Raygun::Client.new
|
32
|
+
Raygun.configuration.record_raw_data = true
|
32
33
|
fake_successful_entry
|
33
34
|
|
34
35
|
# Force NZ time zone for utcOffset tests
|
@@ -222,15 +223,36 @@ class ClientTest < Raygun::UnitTest
|
|
222
223
|
assert_equal({}, @client.send(:request_information, nil))
|
223
224
|
end
|
224
225
|
|
225
|
-
def
|
226
|
-
|
227
|
-
"
|
228
|
-
"
|
226
|
+
def test_raw_post_body
|
227
|
+
env_hash = sample_env_hash.merge({
|
228
|
+
"CONTENT_TYPE" => "application/json",
|
229
|
+
"REQUEST_METHOD" => "POST",
|
230
|
+
"rack.input" => StringIO.new('{"foo": "bar"}')
|
229
231
|
})
|
230
232
|
|
231
|
-
|
233
|
+
assert_equal '{"foo": "bar"}', @client.send(:request_information, env_hash)[:rawData]
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_raw_post_body_with_more_than_4096_chars
|
237
|
+
input = "0" * 5000;
|
238
|
+
env_hash = sample_env_hash.merge({
|
239
|
+
"CONTENT_TYPE" => "application/json",
|
240
|
+
"REQUEST_METHOD" => "POST",
|
241
|
+
"rack.input" => StringIO.new(input)
|
242
|
+
})
|
232
243
|
|
233
|
-
assert_equal
|
244
|
+
assert_equal input.slice(0, 4096), @client.send(:request_information, env_hash)[:rawData]
|
245
|
+
end
|
246
|
+
|
247
|
+
def test_raw_post_body_with_config_disabled
|
248
|
+
Raygun.configuration.record_raw_data = false
|
249
|
+
env_hash = sample_env_hash.merge({
|
250
|
+
"CONTENT_TYPE" => "application/json",
|
251
|
+
"REQUEST_METHOD" => "POST",
|
252
|
+
"rack.input" => StringIO.new('{"foo": "bar"}')
|
253
|
+
})
|
254
|
+
|
255
|
+
assert_equal(nil, @client.send(:request_information, env_hash)[:rawData])
|
234
256
|
end
|
235
257
|
|
236
258
|
def test_error_raygun_custom_data
|
@@ -461,6 +483,7 @@ class ClientTest < Raygun::UnitTest
|
|
461
483
|
Raygun.configuration.filter_payload_with_whitelist = true
|
462
484
|
|
463
485
|
post_body_env_hash = sample_env_hash.merge(
|
486
|
+
"CONTENT_TYPE" => 'application/x-www-form-urlencoded',
|
464
487
|
"REQUEST_METHOD" => "POST",
|
465
488
|
"rack.input"=>StringIO.new("a=b&c=4945438&password=swordfish")
|
466
489
|
)
|
@@ -475,7 +498,7 @@ class ClientTest < Raygun::UnitTest
|
|
475
498
|
queryString: { },
|
476
499
|
headers: { "Version"=>"HTTP/1.1", "Host"=>"localhost:3000", "Cookie"=>"cookieval" },
|
477
500
|
form: { "a" => "[FILTERED]", "c" => "[FILTERED]", "password" => "[FILTERED]" },
|
478
|
-
rawData:
|
501
|
+
rawData: {}
|
479
502
|
}
|
480
503
|
|
481
504
|
assert_equal expected_hash, details[:request]
|
@@ -506,7 +529,7 @@ class ClientTest < Raygun::UnitTest
|
|
506
529
|
queryString: { },
|
507
530
|
headers: { "Version"=>"HTTP/1.1", "Host"=>"localhost:3000", "Cookie"=>"cookieval" },
|
508
531
|
form: { "username" => "foo", "password" => "[FILTERED]" },
|
509
|
-
rawData:
|
532
|
+
rawData: {}
|
510
533
|
}
|
511
534
|
|
512
535
|
assert_equal expected_hash, details[:request]
|
@@ -129,4 +129,8 @@ class ConfigurationTest < Raygun::UnitTest
|
|
129
129
|
def test_api_url_default
|
130
130
|
assert_equal "https://api.raygun.io/", Raygun.configuration.api_url
|
131
131
|
end
|
132
|
+
|
133
|
+
def test_record_raw_data_default
|
134
|
+
assert_equal false, Raygun.configuration.record_raw_data
|
135
|
+
end
|
132
136
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raygun4ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mindscape
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|