rollbar 1.0.0 → 1.0.1
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 +4 -1
- data/README.md +1 -1
- data/lib/rollbar.rb +26 -19
- data/lib/rollbar/version.rb +1 -1
- data/rollbar.gemspec +2 -2
- data/spec/requests/home_spec.rb +1 -1
- data/spec/rollbar_spec.rb +62 -31
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26233ef7ffa02228b4777c5ef26655f9208541e9
|
4
|
+
data.tar.gz: 14feffe767b5d9764afc4508ed139a9d2394ada3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c38f8b6ea8dbdafe38b68cbc5b1902b21e7a55f29ebc154fe23d4a9a2a50d4bba01e623b917f4ba6e3ee17611cbb4d55b07035e40d83ae35eaa90b7ed4fab326
|
7
|
+
data.tar.gz: 08a2f63d80dd45c48eb297e6cfbfc0f551004ad7c4280b2b6a71bb79b3887c814910307c83b742f5ad420586e795f95cf52e4bf7f1a00561e54d3cb4ef671c7e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
**1.0.1**
|
4
|
+
- Use the payload's access token for the X-Rollbar-Access-Token header, instead of the configured access token. Fixes an issue where payloads would be reported into the wrong project when sent via Resque. See [#128](https://github.com/rollbar/rollbar-gem/pull/128). Thanks to [@jondeandres](https://github.com/jondeandres) for the fix.
|
5
|
+
|
3
6
|
**1.0.0**
|
4
7
|
- Clean up some unused requires
|
5
8
|
- Strip out invalid UTF-8 characters from payload keys/values, fixes [#85](https://github.com/rollbar/rollbar-gem/issues/85)
|
@@ -94,7 +97,7 @@
|
|
94
97
|
- Fix syntax error in `config.use_sidekiq` usage example
|
95
98
|
|
96
99
|
**0.12.0**
|
97
|
-
- Added [#73](https://github.com/rollbar/rollbar-gem/pull/73), enhanced Sidekiq and SuckerPunch configuration. NOTE: The old `Rollbar::Configuration#use_sidekiq=` and `Rollbar::Configuration#use_sucker_punch=` methods are now
|
100
|
+
- Added [#73](https://github.com/rollbar/rollbar-gem/pull/73), enhanced Sidekiq and SuckerPunch configuration. NOTE: The old `Rollbar::Configuration#use_sidekiq=` and `Rollbar::Configuration#use_sucker_punch=` methods are now deprecated, see the docs for updated usage information.
|
98
101
|
|
99
102
|
**0.11.8**
|
100
103
|
- Make sure the person method exists for the controller before trying to extract person data
|
data/README.md
CHANGED
data/lib/rollbar.rb
CHANGED
@@ -374,7 +374,10 @@ module Rollbar
|
|
374
374
|
end
|
375
375
|
|
376
376
|
def send_payload_using_eventmachine(payload)
|
377
|
-
|
377
|
+
body = dump_payload(payload)
|
378
|
+
headers = { 'X-Rollbar-Access-Token' => payload['access_token'] }
|
379
|
+
req = EventMachine::HttpRequest.new(configuration.endpoint).post(:body => body, :head => headers)
|
380
|
+
|
378
381
|
req.callback do
|
379
382
|
if req.response_header.status == 200
|
380
383
|
log_info '[Rollbar] Success'
|
@@ -391,11 +394,14 @@ module Rollbar
|
|
391
394
|
|
392
395
|
def send_payload(payload)
|
393
396
|
log_info '[Rollbar] Sending payload'
|
397
|
+
payload = MultiJson.load(payload) if payload.is_a?(String)
|
394
398
|
|
395
399
|
if configuration.use_eventmachine
|
396
400
|
send_payload_using_eventmachine(payload)
|
397
401
|
return
|
398
402
|
end
|
403
|
+
|
404
|
+
body = dump_payload(payload)
|
399
405
|
uri = URI.parse(configuration.endpoint)
|
400
406
|
http = Net::HTTP.new(uri.host, uri.port)
|
401
407
|
http.read_timeout = configuration.request_timeout
|
@@ -406,8 +412,8 @@ module Rollbar
|
|
406
412
|
end
|
407
413
|
|
408
414
|
request = Net::HTTP::Post.new(uri.request_uri)
|
409
|
-
request.body =
|
410
|
-
request.add_field('X-Rollbar-Access-Token',
|
415
|
+
request.body = body
|
416
|
+
request.add_field('X-Rollbar-Access-Token', payload['access_token'])
|
411
417
|
response = http.request(request)
|
412
418
|
|
413
419
|
if response.code == '200'
|
@@ -444,12 +450,15 @@ module Rollbar
|
|
444
450
|
|
445
451
|
def build_payload(data)
|
446
452
|
payload = {
|
447
|
-
|
448
|
-
|
453
|
+
'access_token' => configuration.access_token,
|
454
|
+
'data' => data
|
449
455
|
}
|
450
|
-
|
456
|
+
|
451
457
|
enforce_valid_utf8(payload)
|
452
|
-
|
458
|
+
payload
|
459
|
+
end
|
460
|
+
|
461
|
+
def dump_payload(payload)
|
453
462
|
result = MultiJson.dump(payload)
|
454
463
|
|
455
464
|
# Try to truncate strings in the payload a few times if the payload is too big
|
@@ -589,18 +598,16 @@ module Rollbar
|
|
589
598
|
config = configuration
|
590
599
|
environment = config.environment
|
591
600
|
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
"internal": true,
|
600
|
-
"failsafe": true
|
601
|
-
}
|
601
|
+
failsafe_data = {
|
602
|
+
:level => 'error',
|
603
|
+
:environment => "#{environment}",
|
604
|
+
:body => { :message => { :body => "Failsafe from rollbar-gem: #{message}" } },
|
605
|
+
:notifier => { :name => 'rollbar-gem', :version => "#{VERSION}" },
|
606
|
+
:internal => true,
|
607
|
+
:failsafe => true
|
602
608
|
}
|
603
|
-
|
609
|
+
|
610
|
+
failsafe_payload = build_payload(failsafe_data)
|
604
611
|
|
605
612
|
begin
|
606
613
|
schedule_payload(failsafe_payload)
|
@@ -608,7 +615,7 @@ module Rollbar
|
|
608
615
|
log_error "[Rollbar] Error sending failsafe : #{e}"
|
609
616
|
end
|
610
617
|
end
|
611
|
-
|
618
|
+
|
612
619
|
def enforce_valid_utf8(payload)
|
613
620
|
normalizer = Proc.new do |value|
|
614
621
|
if value.is_a?(String)
|
data/lib/rollbar/version.rb
CHANGED
data/rollbar.gemspec
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
require File.expand_path('../lib/rollbar/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.authors = ["
|
6
|
-
gem.email = ["
|
5
|
+
gem.authors = ["Rollbar, Inc."]
|
6
|
+
gem.email = ["support@rollbar.com"]
|
7
7
|
gem.description = %q{Rails plugin to catch and send exceptions to Rollbar}
|
8
8
|
gem.summary = %q{Reports exceptions to Rollbar}
|
9
9
|
gem.homepage = "https://github.com/rollbar/rollbar-gem"
|
data/spec/requests/home_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe HomeController do
|
|
6
6
|
before(:each) do
|
7
7
|
reset_configuration
|
8
8
|
Rollbar.configure do |config|
|
9
|
-
config.access_token = '
|
9
|
+
config.access_token = 'bfec94a1ede64984b862880224edd0ed'
|
10
10
|
config.environment = ::Rails.env
|
11
11
|
config.root = ::Rails.root
|
12
12
|
config.framework = "Rails: #{::Rails::VERSION::STRING}"
|
data/spec/rollbar_spec.rb
CHANGED
@@ -13,7 +13,7 @@ end
|
|
13
13
|
|
14
14
|
describe Rollbar do
|
15
15
|
|
16
|
-
|
16
|
+
describe '.report_exception' do
|
17
17
|
before(:each) do
|
18
18
|
configure
|
19
19
|
Rollbar.configure do |config|
|
@@ -208,12 +208,12 @@ describe Rollbar do
|
|
208
208
|
it 'should report exception objects with no backtrace' do
|
209
209
|
payload = nil
|
210
210
|
Rollbar.stub(:schedule_payload) do |*args|
|
211
|
-
payload =
|
211
|
+
payload = args[0]
|
212
212
|
end
|
213
213
|
Rollbar.report_exception(StandardError.new("oops"))
|
214
|
-
payload["data"][
|
215
|
-
payload["data"][
|
216
|
-
payload["data"][
|
214
|
+
payload["data"][:body][:trace][:frames].should == []
|
215
|
+
payload["data"][:body][:trace][:exception][:class].should == "StandardError"
|
216
|
+
payload["data"][:body][:trace][:exception][:message].should == "oops"
|
217
217
|
end
|
218
218
|
|
219
219
|
it 'should return the exception data with a uuid, on platforms with SecureRandom' do
|
@@ -227,7 +227,7 @@ describe Rollbar do
|
|
227
227
|
it 'should report exception objects with nonstandard backtraces' do
|
228
228
|
payload = nil
|
229
229
|
Rollbar.stub(:schedule_payload) do |*args|
|
230
|
-
payload =
|
230
|
+
payload = args[0]
|
231
231
|
end
|
232
232
|
|
233
233
|
class CustomException < StandardError
|
@@ -240,22 +240,22 @@ describe Rollbar do
|
|
240
240
|
|
241
241
|
Rollbar.report_exception(exception)
|
242
242
|
|
243
|
-
payload["data"][
|
243
|
+
payload["data"][:body][:trace][:frames][0][:method].should == "custom backtrace line"
|
244
244
|
end
|
245
245
|
|
246
246
|
it 'should report exceptions with a custom level' do
|
247
247
|
payload = nil
|
248
248
|
Rollbar.stub(:schedule_payload) do |*args|
|
249
|
-
payload =
|
249
|
+
payload = args[0]
|
250
250
|
end
|
251
251
|
|
252
252
|
Rollbar.report_exception(@exception)
|
253
253
|
|
254
|
-
payload["data"][
|
254
|
+
payload["data"][:level].should == 'error'
|
255
255
|
|
256
256
|
Rollbar.report_exception(@exception, nil, nil, 'debug')
|
257
257
|
|
258
|
-
payload["data"][
|
258
|
+
payload["data"][:level].should == 'debug'
|
259
259
|
end
|
260
260
|
end
|
261
261
|
|
@@ -475,6 +475,31 @@ describe Rollbar do
|
|
475
475
|
end
|
476
476
|
end
|
477
477
|
|
478
|
+
# We should be able to send String payloads, generated
|
479
|
+
# by a previous version of the gem. This can happend just
|
480
|
+
# after a deploy with an gem upgrade.
|
481
|
+
context 'with a payload generated as String' do
|
482
|
+
let(:async_handler) do
|
483
|
+
proc do |payload|
|
484
|
+
# simulate previous gem version
|
485
|
+
string_payload = MultiJson.dump(payload)
|
486
|
+
|
487
|
+
Rollbar.process_payload(string_payload)
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
before do
|
492
|
+
Rollbar.configuration.stub(:use_async).and_return(true)
|
493
|
+
Rollbar.configuration.stub(:async_handler).and_return(async_handler)
|
494
|
+
end
|
495
|
+
|
496
|
+
it 'sends a payload generated as String, not as a Hash' do
|
497
|
+
logger_mock.should_receive(:info).with('[Rollbar] Success')
|
498
|
+
|
499
|
+
Rollbar.report_exception(@exception)
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
478
503
|
describe "#use_sucker_punch", :if => defined?(SuckerPunch) do
|
479
504
|
it "should send the payload to sucker_punch delayer" do
|
480
505
|
logger_mock.should_receive(:info).with('[Rollbar] Scheduling payload')
|
@@ -662,13 +687,13 @@ describe Rollbar do
|
|
662
687
|
let(:logger_mock) { double("Rails.logger").as_null_object }
|
663
688
|
|
664
689
|
it 'should build valid json' do
|
665
|
-
|
666
|
-
|
667
|
-
|
690
|
+
data = { :foo => { :bar => 'baz'}}
|
691
|
+
payload = Rollbar.send(:build_payload, data)
|
692
|
+
payload["data"][:foo][:bar].should == "baz"
|
668
693
|
end
|
669
|
-
|
694
|
+
|
670
695
|
it 'should strip out invalid utf-8' do
|
671
|
-
|
696
|
+
payload = Rollbar.send(:build_payload, {
|
672
697
|
:good_key => "\255bad value",
|
673
698
|
"bad\255 key" => "good value",
|
674
699
|
"bad key 2\255" => "bad \255value",
|
@@ -676,18 +701,20 @@ describe Rollbar do
|
|
676
701
|
"bad array \255key" => ["bad\255 array element", "good array element"]
|
677
702
|
}
|
678
703
|
})
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
hash["data"]["hash"].should == {
|
704
|
+
|
705
|
+
payload["data"][:good_key].should == 'bad value'
|
706
|
+
payload["data"]["bad key"].should == 'good value'
|
707
|
+
payload["data"]["bad key 2"].should == 'bad value'
|
708
|
+
payload["data"][:hash].should == {
|
685
709
|
"bad array key" => ["bad array element", "good array element"]
|
686
710
|
}
|
687
711
|
end
|
688
712
|
|
689
713
|
it 'should truncate large strings if the payload is too big' do
|
690
|
-
|
714
|
+
data = {:foo => {:bar => "baz"}, :large => 'a' * (128 * 1024), :small => 'b' * 1024}
|
715
|
+
payload = Rollbar.send(:build_payload, data)
|
716
|
+
json = Rollbar.send(:dump_payload, payload)
|
717
|
+
|
691
718
|
hash = MultiJson.load(json)
|
692
719
|
hash["data"]["large"].should == '%s...' % ('a' * 1021)
|
693
720
|
hash["data"]["small"].should == 'b' * 1024
|
@@ -698,14 +725,18 @@ describe Rollbar do
|
|
698
725
|
logger_mock.should_receive(:info).with('[Rollbar] Success')
|
699
726
|
|
700
727
|
orig_max = Rollbar::MAX_PAYLOAD_SIZE
|
701
|
-
|
702
728
|
Rollbar::MAX_PAYLOAD_SIZE = 1
|
703
|
-
Rollbar.
|
729
|
+
orig_send_failsafe = Rollbar.method(:send_failsafe)
|
704
730
|
|
705
|
-
Rollbar
|
731
|
+
Rollbar.stub(:send_failsafe) do |message, exception|
|
732
|
+
Rollbar::MAX_PAYLOAD_SIZE = orig_max
|
733
|
+
orig_send_failsafe.call(message, exception)
|
734
|
+
end
|
735
|
+
|
736
|
+
Rollbar.report_exception(@exception)
|
706
737
|
end
|
707
738
|
end
|
708
|
-
|
739
|
+
|
709
740
|
context 'enforce_valid_utf8' do
|
710
741
|
it 'should replace invalid utf8 values' do
|
711
742
|
payload = {
|
@@ -716,7 +747,7 @@ describe Rollbar do
|
|
716
747
|
:inner_bad_value => "\255\255bad value 3",
|
717
748
|
"inner \255bad key" => 'inner good value',
|
718
749
|
"bad array key\255" => [
|
719
|
-
'good array value 1',
|
750
|
+
'good array value 1',
|
720
751
|
"bad\255 array value 1\255",
|
721
752
|
{
|
722
753
|
:inner_inner_bad => "bad inner \255inner value"
|
@@ -727,7 +758,7 @@ describe Rollbar do
|
|
727
758
|
|
728
759
|
payload_copy = payload.clone
|
729
760
|
Rollbar.send(:enforce_valid_utf8, payload_copy)
|
730
|
-
|
761
|
+
|
731
762
|
payload_copy[:bad_value].should == "bad value 1"
|
732
763
|
payload_copy[:bad_value_2].should == "bad value 2"
|
733
764
|
payload_copy["bad key"].should == "good value"
|
@@ -735,8 +766,8 @@ describe Rollbar do
|
|
735
766
|
payload_copy[:hash][:inner_bad_value].should == "bad value 3"
|
736
767
|
payload_copy[:hash]["inner bad key"].should == 'inner good value'
|
737
768
|
payload_copy[:hash]["bad array key"].should == [
|
738
|
-
'good array value 1',
|
739
|
-
'bad array value 1',
|
769
|
+
'good array value 1',
|
770
|
+
'bad array value 1',
|
740
771
|
{
|
741
772
|
:inner_inner_bad => 'bad inner inner value'
|
742
773
|
}
|
@@ -881,7 +912,7 @@ describe Rollbar do
|
|
881
912
|
|
882
913
|
gem_paths = gems.map{|gem| Gem::Specification.find_all_by_name(gem).map(&:gem_dir) }.flatten.compact.uniq
|
883
914
|
gem_paths.length.should > 1
|
884
|
-
|
915
|
+
|
885
916
|
gem_paths.any?{|path| path.include? 'rollbar-gem'}.should == true
|
886
917
|
gem_paths.any?{|path| path.include? 'rspec-rails'}.should == true
|
887
918
|
|
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.0.
|
4
|
+
version: 1.0.1
|
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-
|
11
|
+
date: 2014-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
version: 0.2.7
|
125
125
|
description: Rails plugin to catch and send exceptions to Rollbar
|
126
126
|
email:
|
127
|
-
-
|
127
|
+
- support@rollbar.com
|
128
128
|
executables: []
|
129
129
|
extensions: []
|
130
130
|
extra_rdoc_files: []
|