raygun4ruby 1.3.0 → 1.4.0

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 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