rollbar 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|