resque-exceptional 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +5 -0
- data/README.md +4 -12
- data/lib/resque/failure/exceptional.rb +9 -2
- data/test/exceptional_test.rb +22 -14
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ffbc88a8025ed460a763e49c28497a9906edb85
|
4
|
+
data.tar.gz: a1bd338c3a4811726d677bc2f9ec85ef1c47ae2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1156a381b68ea151adc95fdc8c5a74a4191f5c059bad76254cde8d40b84e0e23a891cf9d89c05b4406cb67c7e270e2403d97cb085f9cd183ed7eea77dc97a3f0
|
7
|
+
data.tar.gz: 1e9d27a6030d5d6864aec7114ec95ef94d0d390e708b690b571593bd5f944b99358b3e16d62ab199a235dad4ba828204faadf6280a563104e2c30db7e340e58c
|
data/HISTORY.md
CHANGED
data/README.md
CHANGED
@@ -53,6 +53,10 @@ Configuration Options
|
|
53
53
|
|
54
54
|
* `api_key` - your getexceptional.com api key.
|
55
55
|
|
56
|
+
**General Options** *(optional)*
|
57
|
+
|
58
|
+
* `deliver` - set `false` to disable delivery of errors to exceptional API, handy for testing (default: `true`)
|
59
|
+
|
56
60
|
**HTTP Proxy Options** *(optional)*
|
57
61
|
|
58
62
|
* `proxy_host` - proxy server ip / hostname.
|
@@ -66,18 +70,6 @@ Configuration Options
|
|
66
70
|
* `http_open_timeout` - timeout in seconds to establish the connection. (default: `2`)
|
67
71
|
* `http_read_timeout` - timeout in seconds to wait for a reply. (default: `5`)
|
68
72
|
|
69
|
-
Screenshots
|
70
|
-
-----------
|
71
|
-
|
72
|
-
Below are some screenshots of the getexceptional.com web interface, showing
|
73
|
-
Resque exceptions.
|
74
|
-
|
75
|
-
**App Overview**
|
76
|
-
![Get Exceptional - Overview](http://img.skitch.com/20101013-k7hgurmaqew6sn8cik5gywbt2.png)
|
77
|
-
|
78
|
-
**Detailed Information**
|
79
|
-
![Get Exceptional - Details](http://img.skitch.com/20101013-ftjrjhh3fegcqr9mig9kttmwi4.png)
|
80
|
-
|
81
73
|
Note on Patches/Pull Requests
|
82
74
|
-----------------------------
|
83
75
|
|
@@ -2,7 +2,7 @@ module Resque
|
|
2
2
|
module Failure
|
3
3
|
# A Resque failure backend that sends exception data to getexceptional.com
|
4
4
|
class Exceptional < Base
|
5
|
-
Version = '0.2.
|
5
|
+
Version = '0.2.2' # Failure backend version number.
|
6
6
|
|
7
7
|
# Raised if the api_key is not set.
|
8
8
|
class APIKeyError < StandardError
|
@@ -34,7 +34,7 @@ module Resque
|
|
34
34
|
#
|
35
35
|
# When a job fails, a new instance is created and #save is called.
|
36
36
|
def save
|
37
|
-
return
|
37
|
+
return unless deliver?
|
38
38
|
return unless response = http_post_request
|
39
39
|
|
40
40
|
if response.code == '200'
|
@@ -132,6 +132,13 @@ module Resque
|
|
132
132
|
self.class.use_ssl || false
|
133
133
|
end
|
134
134
|
|
135
|
+
# Helper method to check if errors should be submitted to exceptional API.
|
136
|
+
#
|
137
|
+
# @return [Boolean] true if deliver is enabled.
|
138
|
+
def deliver?
|
139
|
+
self.class.deliver.nil? || self.class.deliver
|
140
|
+
end
|
141
|
+
|
135
142
|
# Adds a prefix to log messages.
|
136
143
|
#
|
137
144
|
# @param [String] msg your log message.
|
data/test/exceptional_test.rb
CHANGED
@@ -69,6 +69,7 @@ class ExceptionalTest < Minitest::Test
|
|
69
69
|
def test_configure
|
70
70
|
Resque::Failure::Exceptional.configure do |config|
|
71
71
|
config.api_key = 'my api key.'
|
72
|
+
config.deliver = false
|
72
73
|
# everything below are http client options.
|
73
74
|
config.proxy_host = 'host.name.com'
|
74
75
|
config.proxy_port = 8080
|
@@ -81,8 +82,8 @@ class ExceptionalTest < Minitest::Test
|
|
81
82
|
|
82
83
|
# reset everything to nil...
|
83
84
|
Resque::Failure::Exceptional.configure do |config|
|
84
|
-
options = %w{api_key proxy_host proxy_port proxy_user proxy_pass
|
85
|
-
http_open_timeout http_read_timeout}
|
85
|
+
options = %w{api_key deliver proxy_host proxy_port proxy_user proxy_pass
|
86
|
+
use_ssl http_open_timeout http_read_timeout}
|
86
87
|
options.each { |opt| config.send("#{opt}=", nil) }
|
87
88
|
end
|
88
89
|
end
|
@@ -117,9 +118,8 @@ class ExceptionalTest < Minitest::Test
|
|
117
118
|
with_api_key '27810b263f0e11eef2f1d29be75d2f39' do
|
118
119
|
# turn off delivery.
|
119
120
|
Resque::Failure::Exceptional.configure { |c| c.deliver = false }
|
120
|
-
stub_request(:post, /.*api.exceptional.io.*/)
|
121
121
|
@failure.save
|
122
|
-
assert_equal
|
122
|
+
assert_equal 0, @worker.log_history.length, 'should not send any requests'
|
123
123
|
|
124
124
|
# Put default setting back in place.
|
125
125
|
Resque::Failure::Exceptional.configure { |c| c.deliver = nil }
|
@@ -148,19 +148,25 @@ class ExceptionalTest < Minitest::Test
|
|
148
148
|
assert_match /^resque-exception - .*/, @worker.log_history.last
|
149
149
|
end
|
150
150
|
|
151
|
-
# test our `#use_ssl?` and `#http_port` helper methods.
|
151
|
+
# test our `#use_ssl?`, `deliver?` and `#http_port` helper methods.
|
152
152
|
def test_helper_methods
|
153
|
-
# check defaults
|
154
|
-
assert_equal false, @failure.use_ssl?, 'use_ssl? should default to false.'
|
155
|
-
assert_equal 80, @failure.http_port, 'http_port should default to 80.'
|
156
|
-
|
157
153
|
# enable ssl.
|
158
154
|
Resque::Failure::Exceptional.configure { |c| c.use_ssl = true }
|
159
155
|
assert_equal true, @failure.use_ssl?, 'use_ssl? should now be true'
|
160
156
|
assert_equal 443, @failure.http_port, 'http_port should now be 443.'
|
161
157
|
|
162
|
-
#
|
163
|
-
Resque::Failure::Exceptional.configure { |c| c.use_ssl =
|
158
|
+
# disable ssl.
|
159
|
+
Resque::Failure::Exceptional.configure { |c| c.use_ssl = nil }
|
160
|
+
assert_equal false, @failure.use_ssl?, 'use_ssl? should default to false.'
|
161
|
+
assert_equal 80, @failure.http_port, 'http_port should default to 80.'
|
162
|
+
|
163
|
+
# disable delivery.
|
164
|
+
Resque::Failure::Exceptional.configure { |c| c.deliver = false }
|
165
|
+
assert_equal false, @failure.deliver?, 'deliver should now be false'
|
166
|
+
|
167
|
+
# enable delivery.
|
168
|
+
Resque::Failure::Exceptional.configure { |c| c.deliver = nil }
|
169
|
+
assert_equal true, @failure.deliver?, 'deliver should now be true'
|
164
170
|
end
|
165
171
|
|
166
172
|
# returns nil if the backtrace is empty.
|
@@ -212,8 +218,10 @@ class ExceptionalTest < Minitest::Test
|
|
212
218
|
|
213
219
|
# raise exception if api key is not set.
|
214
220
|
def test_http_path_query_without_api_key_raises_exception
|
215
|
-
|
216
|
-
|
221
|
+
with_api_key nil do
|
222
|
+
assert_raises Resque::Failure::Exceptional::APIKeyError, 'should raise APIKeyError if api key is not set' do
|
223
|
+
@failure.http_path_query
|
224
|
+
end
|
217
225
|
end
|
218
226
|
end
|
219
227
|
|
@@ -263,4 +271,4 @@ class ExceptionalTest < Minitest::Test
|
|
263
271
|
end
|
264
272
|
end
|
265
273
|
|
266
|
-
end
|
274
|
+
end
|