raygun4ruby 2.6.0 → 2.7.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: 12ad609c25703e38bf187602b1eeb27ed13f9fdb
4
- data.tar.gz: 5af743e3db72f0339669b255328d8256be2c6314
3
+ metadata.gz: 1975c19107e042426b56c91ca986207e3e17d681
4
+ data.tar.gz: 491657544cbb5537c01fc4483dd45a8282add25c
5
5
  SHA512:
6
- metadata.gz: 070d775307e84cd705e14c6c6a245d4508c8dfcb95991da06ef62e825255a12fde096808e27d65a11bc2c2e20e892270f3e005eb65a4c9280575075ed3a45bdc
7
- data.tar.gz: 9b011bb6ca157c9fbcd0283721d40a48e90e857425c7055ad93f1445c98eb9c5103c3d7a6bbb2a6e18059bfbf2181d7b66e14c8a0a5ef65782ac84cf6dfcfbe9
6
+ metadata.gz: 79eb83863ba93f963857e2a43af01e9daff5e13cd788a218db867a5a622e51a8ab119b16f546534f7f12b680c9e086fa0d524502306d04b17c95461a56046ab0
7
+ data.tar.gz: 2a4fc829d54fe4deb855283719f7432360854760cf1d78f06235f82304587d00ed2607e42ff7b6cafe9def75e3b0585d81aa0930a403de5861e5e35f881fe967
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 2.7.0 (19/02/2018)
2
+
3
+ Features
4
+ - Add configuration option to control network timeouts when sending error reports, default value is 10 seconds ([#129](https://github.com/MindscapeHQ/raygun4ruby/pull/129))
5
+
1
6
  ## 2.6.0 (25/10/2017)
2
7
 
3
8
  Features
data/Rakefile CHANGED
@@ -8,13 +8,11 @@ namespace :test do
8
8
  desc "Test the basics of the adapter"
9
9
  Rake::TestTask.new(:units) do |t|
10
10
  t.test_files = FileList["test/unit/*_test.rb", "specs/**/*_spec.rb"]
11
- t.verbose = true
12
11
  end
13
12
 
14
13
  desc "Run a test against the live API"
15
14
  Rake::TestTask.new(:integration) do |t|
16
15
  t.test_files = FileList["test/integration/*_test.rb"]
17
- t.verbose = true
18
16
  end
19
17
 
20
18
  end
data/lib/raygun/client.rb CHANGED
@@ -16,6 +16,7 @@ module Raygun
16
16
 
17
17
  enable_http_proxy if Raygun.configuration.proxy_settings[:address]
18
18
  self.class.base_uri Raygun.configuration.api_url
19
+ self.class.default_timeout(Raygun.configuration.error_report_send_timeout)
19
20
  end
20
21
 
21
22
  def require_api_key
@@ -242,7 +243,13 @@ module Raygun
242
243
  def create_entry(payload_hash)
243
244
  Raygun.log('sending payload to api')
244
245
 
245
- self.class.post("/entries", verify_peer: true, verify: true, headers: @headers, body: JSON.generate(payload_hash))
246
+ self.class.post(
247
+ "/entries",
248
+ verify_peer: true,
249
+ verify: true,
250
+ headers: @headers,
251
+ body: JSON.generate(payload_hash),
252
+ )
246
253
  end
247
254
 
248
255
  def filter_params_with_blacklist(params_hash = {}, extra_filter_keys = nil)
@@ -77,6 +77,9 @@ module Raygun
77
77
  # Should the exceptions to Raygun be sent asynchronously?
78
78
  config_option :send_in_background
79
79
 
80
+ # How long to wait for the POST request to the API server before timing out
81
+ config_option :error_report_send_timeout
82
+
80
83
  # Exception classes to ignore by default
81
84
  IGNORE_DEFAULT = ['ActiveRecord::RecordNotFound',
82
85
  'ActionController::RoutingError',
@@ -129,7 +132,8 @@ module Raygun
129
132
  api_url: 'https://api.raygun.io/',
130
133
  breadcrumb_level: :info,
131
134
  record_raw_data: false,
132
- send_in_background: false
135
+ send_in_background: false,
136
+ error_report_send_timeout: 10
133
137
  )
134
138
  end
135
139
 
@@ -1,3 +1,3 @@
1
1
  module Raygun
2
- VERSION = "2.6.0"
2
+ VERSION = "2.7.0"
3
3
  end
data/lib/raygun.rb CHANGED
@@ -51,6 +51,10 @@ module Raygun
51
51
  configuration.defaults
52
52
  end
53
53
 
54
+ def reset_configuration
55
+ @configuration = Configuration.new
56
+ end
57
+
54
58
  def configured?
55
59
  !!configuration.api_key
56
60
  end
@@ -118,7 +122,7 @@ module Raygun
118
122
  def track_exception_async(*args)
119
123
  future = Concurrent::Future.execute { track_exception_sync(*args) }
120
124
  future.add_observer(lambda do |_, value, reason|
121
- if value == nil || value.response.code != "202"
125
+ if value == nil || !value.responds_to?(:response) || value.response.code != "202"
122
126
  log("unexpected response from Raygun, could indicate error: #{value.inspect}")
123
127
  end
124
128
  end, :call)
@@ -127,7 +131,10 @@ module Raygun
127
131
  def track_exception_sync(exception_instance, env, user, retry_count)
128
132
  if should_report?(exception_instance)
129
133
  log('attempting to send exception')
130
- Client.new.track_exception(exception_instance, env, user)
134
+ resp = Client.new.track_exception(exception_instance, env, user)
135
+ log('sent payload to api')
136
+
137
+ resp
131
138
  end
132
139
  rescue Exception => e
133
140
  log('error sending exception to raygun, see failsafe logger for more information')
data/raygun4ruby.gemspec CHANGED
@@ -25,8 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_runtime_dependency "concurrent-ruby"
26
26
 
27
27
  spec.add_development_dependency "bundler", ">= 1.1"
28
- spec.add_development_dependency "rake", "0.9.6"
29
- spec.add_development_dependency "fakeweb", ["~> 1.3"]
28
+ spec.add_development_dependency "rake", "~> 11"
30
29
  spec.add_development_dependency "timecop"
31
30
  spec.add_development_dependency "minitest", "~> 4.2"
32
31
  spec.add_development_dependency "redis-namespace", ">= 1.3.1"
@@ -34,4 +33,5 @@ Gem::Specification.new do |spec|
34
33
  spec.add_development_dependency "sidekiq", [">= 3", "< 3.2.2"]
35
34
  spec.add_development_dependency "mocha"
36
35
  spec.add_development_dependency "pry"
36
+ spec.add_development_dependency "webmock"
37
37
  end
@@ -0,0 +1,50 @@
1
+ require_relative '../spec_helper'
2
+ require 'stringio'
3
+
4
+ describe Raygun do
5
+ let(:failsafe_logger) { FakeLogger.new }
6
+
7
+ describe '#track_exception' do
8
+ context 'send in background' do
9
+ before do
10
+ Raygun.setup do |c|
11
+ c.send_in_background = true
12
+ c.api_url = 'http://example.api'
13
+ c.api_key = 'foo'
14
+ c.debug = true
15
+ c.failsafe_logger = failsafe_logger
16
+ end
17
+ end
18
+
19
+ context 'request times out' do
20
+ before do
21
+ stub_request(:post, 'http://example.api/entries').to_timeout
22
+ end
23
+
24
+ it 'logs the failure to the failsafe logger' do
25
+ error = StandardError.new
26
+
27
+ Raygun.track_exception(error)
28
+
29
+ # Occasionally doesn't write to the failsafe logger, add small timeout to add some safety
30
+ sleep 0.1
31
+ failsafe_logger.get.must_match /Problem reporting exception to Raygun/
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#reset_configuration' do
38
+ it 'clears any customized configuration options' do
39
+ Raygun.setup do |c|
40
+ c.api_url = 'http://test.api'
41
+ end
42
+
43
+ Raygun.configuration.api_url.must_equal 'http://test.api'
44
+
45
+ Raygun.reset_configuration
46
+
47
+ Raygun.configuration.api_url.must_equal Raygun.default_configuration.api_url
48
+ end
49
+ end
50
+ end
data/specs/spec_helper.rb CHANGED
@@ -2,8 +2,28 @@ ENV['RACK_ENV'] = 'test'
2
2
  require_relative "../lib/raygun.rb"
3
3
  require "minitest/autorun"
4
4
  require "minitest/pride"
5
- require "fakeweb"
6
5
  require "timecop"
7
6
  require "mocha/mini_test"
7
+ require "webmock/minitest"
8
+ require 'stringio'
8
9
 
9
10
  alias :context :describe
11
+
12
+ class FakeLogger
13
+ def initialize
14
+ @logger = StringIO.new
15
+ end
16
+
17
+ def info(message)
18
+ @logger.write(message)
19
+ end
20
+
21
+ def reset
22
+ @logger.string = ""
23
+ end
24
+
25
+ def get
26
+ @logger.string
27
+ end
28
+ end
29
+
data/test/test_helper.rb CHANGED
@@ -2,7 +2,6 @@ ENV['RACK_ENV'] = 'test'
2
2
  require_relative "../lib/raygun.rb"
3
3
  require "minitest/autorun"
4
4
  require "minitest/pride"
5
- require "fakeweb"
6
5
  require "timecop"
7
6
  require "mocha/mini_test"
8
7
  require 'stringio'
@@ -47,20 +46,17 @@ end
47
46
  class Raygun::UnitTest < MiniTest::Unit::TestCase
48
47
 
49
48
  def setup
50
- FakeWeb.allow_net_connect = false
51
49
  Raygun.configuration.api_key = "test api key"
52
50
  end
53
51
 
54
- def fake_successful_entry
55
- FakeWeb.register_uri(:post, "https://api.raygun.io/entries", body: "", status: 202)
56
- end
57
-
58
52
  def teardown
59
- FakeWeb.clean_registry
60
- FakeWeb.allow_net_connect = true
61
53
  reset_configuration
62
54
  end
63
55
 
56
+ def fake_successful_entry
57
+ stub_request(:post, 'https://api.raygun.io/entries').to_return(status: 202)
58
+ end
59
+
64
60
  def reset_configuration
65
61
  Raygun.configuration = Raygun::Configuration.new
66
62
  end
@@ -12,6 +12,10 @@ class ConfigurationTest < Raygun::UnitTest
12
12
  end
13
13
  end
14
14
 
15
+ def teardown
16
+ Raygun.reset_configuration
17
+ end
18
+
15
19
  def test_setting_api_key_and_version
16
20
  assert_equal 9.9, Raygun.configuration.version
17
21
  assert_equal "a test api key", Raygun.configuration.api_key
@@ -179,4 +183,12 @@ class ConfigurationTest < Raygun::UnitTest
179
183
  def test_send_in_background_default
180
184
  assert_equal false, Raygun.configuration.send_in_background
181
185
  end
186
+
187
+ def test_error_report_send_timeout_default
188
+ assert_equal 10, Raygun.configuration.error_report_send_timeout
189
+ end
190
+
191
+ def test_enable_reporting_default
192
+ assert_equal true, Raygun.configuration.enable_reporting
193
+ end
182
194
  end
@@ -7,6 +7,8 @@ class ResqueFailureTest < Raygun::UnitTest
7
7
 
8
8
  def setup
9
9
  super
10
+
11
+ stub_request(:post, 'https://api.raygun.io/entries').to_return(status: 202)
10
12
  fake_successful_entry
11
13
  end
12
14
 
@@ -19,4 +21,4 @@ class ResqueFailureTest < Raygun::UnitTest
19
21
  ).save.success?
20
22
  end
21
23
 
22
- end
24
+ end
@@ -13,6 +13,8 @@ class SidekiqFailureTest < Raygun::UnitTest
13
13
 
14
14
  def setup
15
15
  super
16
+
17
+ stub_request(:post, 'https://api.raygun.io/entries').to_return(status: 202)
16
18
  fake_successful_entry
17
19
  end
18
20
 
@@ -27,4 +29,4 @@ class SidekiqFailureTest < Raygun::UnitTest
27
29
  assert Sidekiq.error_handlers.include?(Raygun::SidekiqReporter)
28
30
  end
29
31
 
30
- end
32
+ 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: 2.6.0
4
+ version: 2.7.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-10-24 00:00:00.000000000 Z
12
+ date: 2018-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -83,32 +83,18 @@ dependencies:
83
83
  version: '1.1'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: rake
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - '='
89
- - !ruby/object:Gem::Version
90
- version: 0.9.6
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - '='
96
- - !ruby/object:Gem::Version
97
- version: 0.9.6
98
- - !ruby/object:Gem::Dependency
99
- name: fakeweb
100
86
  requirement: !ruby/object:Gem::Requirement
101
87
  requirements:
102
88
  - - "~>"
103
89
  - !ruby/object:Gem::Version
104
- version: '1.3'
90
+ version: '11'
105
91
  type: :development
106
92
  prerelease: false
107
93
  version_requirements: !ruby/object:Gem::Requirement
108
94
  requirements:
109
95
  - - "~>"
110
96
  - !ruby/object:Gem::Version
111
- version: '1.3'
97
+ version: '11'
112
98
  - !ruby/object:Gem::Dependency
113
99
  name: timecop
114
100
  requirement: !ruby/object:Gem::Requirement
@@ -213,6 +199,20 @@ dependencies:
213
199
  - - ">="
214
200
  - !ruby/object:Gem::Version
215
201
  version: '0'
202
+ - !ruby/object:Gem::Dependency
203
+ name: webmock
204
+ requirement: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ type: :development
210
+ prerelease: false
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
216
  description: Ruby Adapter for Raygun.io
217
217
  email:
218
218
  - hello@raygun.io
@@ -251,6 +251,7 @@ files:
251
251
  - raygun4ruby.gemspec
252
252
  - specs/raygun/breadcrumbs/breadcrumb_spec.rb
253
253
  - specs/raygun/breadcrumbs/store_spec.rb
254
+ - specs/raygun/raygun_spec.rb
254
255
  - specs/services/apply_whitelist_filter_to_payload_spec.rb
255
256
  - specs/spec_helper.rb
256
257
  - test/integration/client_test.rb