rollbar 1.4.5 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.5.0
4
+
5
+ Bug fixes:
6
+
7
+ - Fixed support for extended unicode characters. See [#234](https://github.com/rollbar/rollbar-gem/pull/234)
8
+
9
+ Possible breaking changes:
10
+
11
+ - Some characters that previously were stripped are now encoded. This could cause some events to be grouped into new items by Rollbar.
12
+
13
+
3
14
  ## 1.4.5
4
15
 
5
16
  Bug fixes:
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.4.5)](https://travis-ci.org/rollbar/rollbar-gem/branches)
1
+ # Rollbar notifier for Ruby [![Build Status](https://api.travis-ci.org/rollbar/rollbar-gem.svg?branch=v1.5.0)](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.4.5'
12
+ gem 'rollbar', '~> 1.5.0
13
13
 
14
14
  And then execute:
15
15
 
data/lib/rollbar.rb CHANGED
@@ -423,7 +423,14 @@ module Rollbar
423
423
  value = object.to_s
424
424
 
425
425
  if value.respond_to? :encode
426
- encoded_value = value.encode('UTF-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '')
426
+ options = { :invalid => :replace, :undef => :replace, :replace => '' }
427
+ ascii_encodings = [Encoding.find('US-ASCII'), Encoding.find('ASCII-8BIT')]
428
+
429
+ args = ['UTF-8']
430
+ args << 'binary' if ascii_encodings.include?(value.encoding)
431
+ args << options
432
+
433
+ encoded_value = value.encode(*args)
427
434
  else
428
435
  encoded_value = ::Iconv.conv('UTF-8//IGNORE', 'UTF-8', value)
429
436
  end
@@ -1,3 +1,3 @@
1
1
  module Rollbar
2
- VERSION = "1.4.5"
2
+ VERSION = "1.5.0"
3
3
  end
data/spec/rollbar_spec.rb CHANGED
@@ -943,7 +943,7 @@ describe Rollbar do
943
943
 
944
944
  context 'with invalid utf8 encoding' do
945
945
  let(:extra) do
946
- { :extra => "bad value 1\255" }
946
+ { :extra => force_to_ascii("bad value 1\255") }
947
947
  end
948
948
 
949
949
  it 'removes te invalid characteres' do
@@ -1336,27 +1336,40 @@ describe Rollbar do
1336
1336
  end
1337
1337
 
1338
1338
  context 'enforce_valid_utf8' do
1339
+ context 'with utf8 string and ruby > 1.8' do
1340
+ next unless String.instance_methods.include?(:force_encoding)
1341
+
1342
+ let(:payload) { { :foo => 'Изменение' } }
1343
+
1344
+ it 'just returns the same string' do
1345
+ payload_copy = payload.clone
1346
+ notifier.send(:enforce_valid_utf8, payload_copy)
1347
+
1348
+ expect(payload_copy[:foo]).to be_eql('Изменение')
1349
+ end
1350
+ end
1351
+
1339
1352
  it 'should replace invalid utf8 values' do
1340
- bad_key = "inner \x92bad key"
1341
- bad_key.force_encoding('ASCII-8BIT') if bad_key.respond_to?('force_encoding')
1353
+ bad_key = force_to_ascii("inner \x92bad key")
1342
1354
 
1343
1355
  payload = {
1344
- :bad_value => "bad value 1\255",
1345
- :bad_value_2 => "bad\255 value 2",
1346
- "bad\255 key" => "good value",
1356
+ :bad_value => force_to_ascii("bad value 1\255"),
1357
+ :bad_value_2 => force_to_ascii("bad\255 value 2"),
1358
+ force_to_ascii("bad\255 key") => "good value",
1347
1359
  :hash => {
1348
- :inner_bad_value => "\255\255bad value 3",
1360
+ :inner_bad_value => force_to_ascii("\255\255bad value 3"),
1349
1361
  bad_key.to_sym => 'inner good value',
1350
- "bad array key\255" => [
1362
+ force_to_ascii("bad array key\255") => [
1351
1363
  'good array value 1',
1352
- "bad\255 array value 1\255",
1364
+ force_to_ascii("bad\255 array value 1\255"),
1353
1365
  {
1354
- :inner_inner_bad => "bad inner \255inner value"
1366
+ :inner_inner_bad => force_to_ascii("bad inner \255inner value")
1355
1367
  }
1356
1368
  ]
1357
1369
  }
1358
1370
  }
1359
1371
 
1372
+
1360
1373
  payload_copy = payload.clone
1361
1374
  notifier.send(:enforce_valid_utf8, payload_copy)
1362
1375
 
data/spec/spec_helper.rb CHANGED
@@ -17,6 +17,7 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
17
17
  RSpec.configure do |config|
18
18
  config.include(NotifierHelpers)
19
19
  config.include(FixtureHelpers)
20
+ config.include(EncodingHelpers)
20
21
 
21
22
  config.color_enabled = true
22
23
  config.formatter = 'documentation'
@@ -0,0 +1,8 @@
1
+ module EncodingHelpers
2
+ def force_to_ascii(string)
3
+ return string unless string.respond_to?('force_encoding')
4
+
5
+ string.force_encoding('ASCII-8BIT')
6
+ string
7
+ end
8
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rollbar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 1.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-02 00:00:00.000000000 Z
12
+ date: 2015-04-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &7871420 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '1.3'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *7871420
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rails
27
- requirement: &7869800 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 3.0.0
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *7869800
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 3.0.0
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rspec-rails
38
- requirement: &7818380 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 2.14.0
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *7818380
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.14.0
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: database_cleaner
49
- requirement: &7817420 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: 1.0.0
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *7817420
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.0.0
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: girl_friday
60
- requirement: &7816620 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: 0.11.1
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *7816620
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.11.1
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: sucker_punch
71
- requirement: &7815720 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: 1.0.0
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *7815720
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.0
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: sidekiq
82
- requirement: &7814720 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: 2.13.0
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *7814720
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 2.13.0
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: genspec
93
- requirement: &7813460 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: 0.2.8
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *7813460
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: 0.2.8
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: sinatra
104
- requirement: &7811380 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,10 +149,15 @@ dependencies:
109
149
  version: '0'
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *7811380
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  - !ruby/object:Gem::Dependency
114
159
  name: resque
115
- requirement: &7756540 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
116
161
  none: false
117
162
  requirements:
118
163
  - - ! '>='
@@ -120,10 +165,15 @@ dependencies:
120
165
  version: '0'
121
166
  type: :development
122
167
  prerelease: false
123
- version_requirements: *7756540
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
124
174
  - !ruby/object:Gem::Dependency
125
175
  name: delayed_job
126
- requirement: &7755160 !ruby/object:Gem::Requirement
176
+ requirement: !ruby/object:Gem::Requirement
127
177
  none: false
128
178
  requirements:
129
179
  - - ! '>='
@@ -131,10 +181,15 @@ dependencies:
131
181
  version: '0'
132
182
  type: :development
133
183
  prerelease: false
134
- version_requirements: *7755160
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
135
190
  - !ruby/object:Gem::Dependency
136
191
  name: rake
137
- requirement: &7754120 !ruby/object:Gem::Requirement
192
+ requirement: !ruby/object:Gem::Requirement
138
193
  none: false
139
194
  requirements:
140
195
  - - ! '>='
@@ -142,7 +197,12 @@ dependencies:
142
197
  version: 0.9.0
143
198
  type: :development
144
199
  prerelease: false
145
- version_requirements: *7754120
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: 0.9.0
146
206
  description: Rails plugin to catch and send exceptions to Rollbar
147
207
  email:
148
208
  - support@rollbar.com
@@ -287,6 +347,7 @@ files:
287
347
  - spec/rollbar_spec.rb
288
348
  - spec/spec_helper.rb
289
349
  - spec/support/cause_exception.rb
350
+ - spec/support/encoding_helpers.rb
290
351
  - spec/support/fixture_helpers.rb
291
352
  - spec/support/get_ip_raising.rb
292
353
  - spec/support/notifier_helpers.rb
@@ -312,7 +373,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
373
  version: '0'
313
374
  requirements: []
314
375
  rubyforge_project:
315
- rubygems_version: 1.8.11
376
+ rubygems_version: 1.8.23
316
377
  signing_key:
317
378
  specification_version: 3
318
379
  summary: Reports exceptions to Rollbar
@@ -393,6 +454,7 @@ test_files:
393
454
  - spec/rollbar_spec.rb
394
455
  - spec/spec_helper.rb
395
456
  - spec/support/cause_exception.rb
457
+ - spec/support/encoding_helpers.rb
396
458
  - spec/support/fixture_helpers.rb
397
459
  - spec/support/get_ip_raising.rb
398
460
  - spec/support/notifier_helpers.rb