airbrake-ruby 1.2.3 → 1.2.4
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/lib/airbrake-ruby/payload_truncator.rb +5 -3
- data/lib/airbrake-ruby/version.rb +1 -1
- data/spec/payload_truncator_spec.rb +11 -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: 3dca16a0676d8aa679ffb3980107107697027b4e
|
4
|
+
data.tar.gz: bfb64410f23a9f6f37047bc9baad6147c25f874e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0adab3693e3ea82b617927c3efddc5d85ded45be062d849c27e4090c06a5099647449e182c8a945c5e055fc79d2a609b42d08d77a28d989f94b94feaec55ae97
|
7
|
+
data.tar.gz: 3034cfdedfb4320732413e948736dfe6982323859ef109bbcec4044047bb10cce88421a862c67156939c713b7a42ec839581f9c5d64120f853e74d82dd35c60d
|
@@ -91,7 +91,7 @@ module Airbrake
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def truncate_string(str)
|
94
|
-
replace_invalid_characters!(str)
|
94
|
+
str = replace_invalid_characters!(str)
|
95
95
|
return str if str.length <= @max_size
|
96
96
|
str.slice(0, @max_size) + '[Truncated]'.freeze
|
97
97
|
end
|
@@ -106,14 +106,16 @@ module Airbrake
|
|
106
106
|
# For modern Rubies we use UTF-16 as a safe alternative.
|
107
107
|
#
|
108
108
|
# @param [String] str The string to replace characters
|
109
|
-
# @return [
|
110
|
-
# @note This method mutates +str+
|
109
|
+
# @return [String] a UTF-8 encoded string
|
110
|
+
# @note This method mutates +str+ unless it's frozen,
|
111
|
+
# in which case it creates a duplicate
|
111
112
|
# @see https://github.com/flori/json/commit/3e158410e81f94dbbc3da6b7b35f4f64983aa4e3
|
112
113
|
def replace_invalid_characters!(str)
|
113
114
|
encoding = str.encoding
|
114
115
|
utf8_string = (encoding == Encoding::UTF_8 || encoding == Encoding::ASCII)
|
115
116
|
return str if utf8_string && str.valid_encoding?
|
116
117
|
|
118
|
+
str = str.dup if str.frozen?
|
117
119
|
str.encode!(TEMP_ENCODING, ENCODING_OPTIONS) if utf8_string
|
118
120
|
str.encode!('utf-8', ENCODING_OPTIONS)
|
119
121
|
end
|
@@ -445,6 +445,17 @@ RSpec.describe Airbrake::PayloadTruncator do
|
|
445
445
|
|
446
446
|
expect(params[:unicode]).to match(/[�\?]{4}/)
|
447
447
|
end
|
448
|
+
|
449
|
+
it "doesn't fail when string is frozen" do
|
450
|
+
encoded = Base64.encode64("\xD3\xE6\xBC\x9D\xBA").encode!('ASCII-8BIT')
|
451
|
+
bad_string = Base64.decode64(encoded).freeze
|
452
|
+
|
453
|
+
params = { unicode: bad_string }
|
454
|
+
|
455
|
+
@truncator.truncate_object(params)
|
456
|
+
|
457
|
+
expect(params[:unicode]).to match(/[�\?]{4}/)
|
458
|
+
end
|
448
459
|
end
|
449
460
|
end
|
450
461
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airbrake-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airbrake Technologies, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04
|
11
|
+
date: 2016-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|