raygun4ruby 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 177fe25eed9a04d4924bf9a49ce89e521cdc3af3
4
- data.tar.gz: 4b1ee81e75e37b688a24bb9bc18a8ac187eb2e90
3
+ metadata.gz: 997889cefe9c1b82cdd6d6705b89d180735022ab
4
+ data.tar.gz: 4639a0dc7117a6f0645927e22411670f117e759f
5
5
  SHA512:
6
- metadata.gz: 240b3595f0525d734fd067e33db5f21a0f20e3c47901c44c019fb046d35c4566fe685e48343721049507afc711fc30364aa11bffb1d218526a1d28391db06f14
7
- data.tar.gz: c9054cb36202bab19b695cc08de7c8e48cff4c50cd1e5fa911f9aac217076a0e08cf6984bb2429ffe79d0f0c8c9d6f1e486daf9b4b80de02dea4ae2d767acb09
6
+ metadata.gz: 878194b16e28a4acd08c76c2a164169162811eb4d033dfe251f5412a8ccbcc3c433fd28cd8bead36701dae82f360eba77fbbdef6d99b051725b3e467aced5c0e
7
+ data.tar.gz: 6a16be23e16879c829630638123a34ed28551739d91c86970a748d7a06530401e80218f9aa8ae55b4df0b01e54f3a169b1f7647d5aa7b6e988edc43476d1348a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 1.4.0
2
+
3
+ Features:
4
+ - Raygun API url is now configurable via `Configuration.api_url`
5
+ - Added support for `Exception#cause` to be tracked as `innerError` on Raygun. Only supported on Ruby >= 2.1
6
+
1
7
  ## 1.3.0 (10/03/2017)
2
8
 
3
9
  Features:
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Raygun 4 Ruby [![Build Status](https://travis-ci.org/MindscapeHQ/raygun4ruby.png?branch=master)](https://travis-ci.org/MindscapeHQ/raygun4ruby)
1
+ # Raygun 4 Ruby [![Build Status](https://travis-ci.org/MindscapeHQ/raygun4ruby.png?branch=master)](https://travis-ci.org/MindscapeHQ/raygun4ruby) [![Gem Version](https://badge.fury.io/rb/raygun4ruby.svg)](https://badge.fury.io/rb/raygun4ruby)
2
2
 
3
3
  This is the Ruby adapter for the Raygun error reporter, http://raygun.io.
4
4
 
data/lib/raygun/client.rb CHANGED
@@ -8,8 +8,6 @@ module Raygun
8
8
 
9
9
  include HTTParty
10
10
 
11
- base_uri "https://api.raygun.io/"
12
-
13
11
  def initialize
14
12
  @api_key = require_api_key
15
13
  @headers = {
@@ -17,6 +15,7 @@ module Raygun
17
15
  }
18
16
 
19
17
  enable_http_proxy if Raygun.configuration.proxy_settings[:address]
18
+ self.class.base_uri Raygun.configuration.api_url
20
19
  end
21
20
 
22
21
  def require_api_key
@@ -45,11 +44,15 @@ module Raygun
45
44
  end
46
45
 
47
46
  def error_details(exception)
48
- {
47
+ details = {
49
48
  className: exception.class.to_s,
50
49
  message: exception.message.to_s.encode('UTF-16', :undef => :replace, :invalid => :replace).encode('UTF-8'),
51
- stackTrace: (exception.backtrace || []).map { |line| stack_trace_for(line) }
50
+ stackTrace: (exception.backtrace || []).map { |line| stack_trace_for(line) },
52
51
  }
52
+
53
+ details.update(innerError: error_details(exception.cause)) if exception.respond_to?(:cause) && exception.cause
54
+
55
+ details
53
56
  end
54
57
 
55
58
  def stack_trace_for(line)
@@ -67,6 +67,9 @@ module Raygun
67
67
  # Set this to true to have raygun4ruby log the reason why it skips reporting an exception
68
68
  config_option :debug
69
69
 
70
+ # Override this if you wish to connect to a different Raygun API than the standard one
71
+ config_option :api_url
72
+
70
73
  # Exception classes to ignore by default
71
74
  IGNORE_DEFAULT = ['ActiveRecord::RecordNotFound',
72
75
  'ActionController::RoutingError',
@@ -115,7 +118,8 @@ module Raygun
115
118
  filter_payload_with_whitelist: false,
116
119
  whitelist_payload_shape: DEFAULT_WHITELIST_PAYLOAD_SHAPE,
117
120
  proxy_settings: {},
118
- debug: false
121
+ debug: false,
122
+ api_url: 'https://api.raygun.io/'
119
123
  })
120
124
  end
121
125
 
@@ -1,3 +1,3 @@
1
1
  module Raygun
2
- VERSION = "1.3.0"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -57,6 +57,37 @@ class ClientTest < Raygun::UnitTest
57
57
  assert_equal expected_message, @client.send(:error_details, e)[:message]
58
58
  end
59
59
 
60
+ def test_inner_error_details
61
+ oe = TestException.new("A test message")
62
+ oe.set_backtrace(["/some/folder/some_file.rb:123:in `some_method_name'"])
63
+
64
+ ie = TestException.new("Inner test message")
65
+ ie.set_backtrace(["/another/path/foo.rb:1234:in `block (3 levels) run'"])
66
+
67
+ e = nest_exceptions(oe, ie)
68
+
69
+ expected_hash = {
70
+ className: "ClientTest::TestException",
71
+ message: oe.message,
72
+ stackTrace: [
73
+ { lineNumber: "123", fileName: "/some/folder/some_file.rb", methodName: "some_method_name" }
74
+ ]
75
+ }
76
+
77
+ # test inner error according with its availability (ruby >= 2.1)
78
+ if e.respond_to? :cause
79
+ expected_hash[:innerError] = {
80
+ className: "ClientTest::TestException",
81
+ message: ie.message,
82
+ stackTrace: [
83
+ { lineNumber: "1234", fileName: "/another/path/foo.rb", methodName: "block (3 levels) run"}
84
+ ]
85
+ }
86
+ end
87
+
88
+ assert_equal expected_hash, @client.send(:error_details, e)
89
+ end
90
+
60
91
  def test_client_details
61
92
  expected_hash = {
62
93
  name: Raygun::CLIENT_NAME,
@@ -589,6 +620,21 @@ class ClientTest < Raygun::UnitTest
589
620
  e
590
621
  end
591
622
 
623
+ def nest_exceptions(outer_exception, inner_exception)
624
+ begin
625
+ begin
626
+ raise inner_exception.class, inner_exception.message
627
+ rescue => e
628
+ e.set_backtrace inner_exception.backtrace
629
+ raise outer_exception.class, outer_exception.message
630
+ end
631
+ rescue => nested_exception
632
+ nested_exception.set_backtrace outer_exception.backtrace
633
+ end
634
+
635
+ nested_exception
636
+ end
637
+
592
638
  def exception_hash
593
639
  {
594
640
  className: "ClientTest::TestException",
@@ -618,5 +664,4 @@ class ClientTest < Raygun::UnitTest
618
664
  "REMOTE_ADDR"=>"127.0.0.1"
619
665
  }
620
666
  end
621
-
622
667
  end
@@ -125,4 +125,8 @@ class ConfigurationTest < Raygun::UnitTest
125
125
  ensure
126
126
  Raygun.configuration.custom_data = nil
127
127
  end
128
+
129
+ def test_api_url_default
130
+ assert_equal "https://api.raygun.io/", Raygun.configuration.api_url
131
+ end
128
132
  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: 1.3.0
4
+ version: 1.4.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-03-10 00:00:00.000000000 Z
12
+ date: 2017-03-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty