mrhenry-failtale-reporter 0.0.2 → 0.0.3
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.
data/lib/failtale_reporter.rb
CHANGED
|
@@ -7,6 +7,7 @@ rescue LoadError
|
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
require File.dirname(__FILE__)+'/failtale_reporter/error'
|
|
10
|
+
require File.dirname(__FILE__)+'/failtale_reporter/client'
|
|
10
11
|
|
|
11
12
|
module FailtaleReporter
|
|
12
13
|
|
|
@@ -30,33 +31,19 @@ module FailtaleReporter
|
|
|
30
31
|
def api_token(token=nil)
|
|
31
32
|
@api_token ||= token
|
|
32
33
|
end
|
|
34
|
+
def default_reporter(reporter=nil)
|
|
35
|
+
@default_reporter = reporter if reporter
|
|
36
|
+
@default_reporter
|
|
37
|
+
end
|
|
33
38
|
def configure
|
|
34
39
|
yield self
|
|
35
40
|
end
|
|
36
41
|
end
|
|
37
42
|
|
|
38
|
-
|
|
39
|
-
error = handle_exception(error)
|
|
40
|
-
yield if block_given? and error.nil?
|
|
41
|
-
rescue Exception => exception
|
|
42
|
-
error = handle_exception(exception)
|
|
43
|
-
ensure
|
|
44
|
-
post_report(error) unless error.nil?
|
|
45
|
-
raise exception unless exception.nil?
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def self.handle_exception(exception)
|
|
49
|
-
return exception if exception.nil?
|
|
50
|
-
return exception if exception.is_a? FailtaleReporter::Error
|
|
51
|
-
return nil unless reportable_exceptions.any? {|c| exception.is_a? c }
|
|
52
|
-
return nil if ignored_exceptions.any? {|c| exception.is_a? c }
|
|
53
|
-
Error.new(exception)
|
|
54
|
-
end
|
|
43
|
+
default_reporter 'ruby'
|
|
55
44
|
|
|
56
|
-
def self.
|
|
57
|
-
|
|
58
|
-
params[:report][:project] = { :api_token => api_token }
|
|
59
|
-
self.post('/reports.xml', :body => params)
|
|
45
|
+
def self.report(error=nil, &block)
|
|
46
|
+
Client.new.report(error, &block)
|
|
60
47
|
end
|
|
61
48
|
|
|
62
49
|
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
|
|
2
|
+
module FailtaleReporter
|
|
3
|
+
class Client
|
|
4
|
+
|
|
5
|
+
def report(error=nil)
|
|
6
|
+
error = handle_exception(error)
|
|
7
|
+
yield if block_given? and error.nil?
|
|
8
|
+
rescue Exception => exception
|
|
9
|
+
error = handle_exception(exception)
|
|
10
|
+
ensure
|
|
11
|
+
post_report(error) unless error.nil?
|
|
12
|
+
raise exception unless exception.nil?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def handle_exception(exception)
|
|
18
|
+
return exception if exception.is_a? FailtaleReporter::Error
|
|
19
|
+
return nil if exception.nil?
|
|
20
|
+
return nil unless FailtaleReporter.reportable_exceptions.any? {|c| exception.is_a? c }
|
|
21
|
+
return nil if FailtaleReporter.ignored_exceptions.any? {|c| exception.is_a? c }
|
|
22
|
+
FailtaleReporter::Error.new(exception)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def post_report(error)
|
|
26
|
+
response = FailtaleReporter.post('/reports.xml', :body => error.to_param)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -2,29 +2,37 @@
|
|
|
2
2
|
module FailtaleReporter
|
|
3
3
|
class Error
|
|
4
4
|
|
|
5
|
+
attr_accessor :api_token
|
|
5
6
|
attr_accessor :hash_string
|
|
6
7
|
attr_accessor :name
|
|
8
|
+
attr_accessor :reporter
|
|
7
9
|
attr_accessor :description
|
|
8
10
|
attr_accessor :properties
|
|
9
11
|
attr_accessor :backtrace
|
|
10
12
|
attr_accessor :environment
|
|
11
13
|
|
|
12
14
|
def initialize(exception)
|
|
15
|
+
self.api_token = FailtaleReporter.api_token
|
|
16
|
+
self.reporter = FailtaleReporter.default_reporter
|
|
17
|
+
|
|
13
18
|
self.name = "#{exception.class} #{exception.message}"
|
|
14
19
|
self.description = exception.message
|
|
15
20
|
self.backtrace = exception.backtrace.join("\n")
|
|
16
|
-
self.environment =
|
|
21
|
+
self.environment = ENV.to_hash
|
|
17
22
|
self.hash_string = Digest::SHA1.hexdigest(
|
|
18
|
-
[exception.class, exception.
|
|
23
|
+
[exception.class, exception.backtrace.first].join('--')
|
|
19
24
|
)
|
|
20
25
|
end
|
|
21
26
|
|
|
22
27
|
def to_param
|
|
23
28
|
{ :report =>
|
|
24
|
-
{ :
|
|
29
|
+
{ :project => {
|
|
30
|
+
:api_token => self.api_token
|
|
31
|
+
},:error => {
|
|
25
32
|
:hash_string => self.hash_string
|
|
26
33
|
},:occurence => {
|
|
27
34
|
:name => self.name,
|
|
35
|
+
:reporter => self.reporter,
|
|
28
36
|
:description => self.description,
|
|
29
37
|
:backtrace => self.backtrace,
|
|
30
38
|
:properties => self.environment
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mrhenry-failtale-reporter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Simon Menke
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-
|
|
12
|
+
date: 2009-02-09 00:00:00 -08:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -19,7 +19,7 @@ dependencies:
|
|
|
19
19
|
requirements:
|
|
20
20
|
- - ">="
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 0.
|
|
22
|
+
version: 0.3.0
|
|
23
23
|
version:
|
|
24
24
|
- !ruby/object:Gem::Dependency
|
|
25
25
|
name: httparty
|
|
@@ -28,7 +28,7 @@ dependencies:
|
|
|
28
28
|
requirements:
|
|
29
29
|
- - ">="
|
|
30
30
|
- !ruby/object:Gem::Version
|
|
31
|
-
version: 0.
|
|
31
|
+
version: 0.3.0
|
|
32
32
|
version:
|
|
33
33
|
description:
|
|
34
34
|
email: simon.menke@gmail.com
|
|
@@ -39,15 +39,16 @@ extensions: []
|
|
|
39
39
|
extra_rdoc_files: []
|
|
40
40
|
|
|
41
41
|
files:
|
|
42
|
-
- rails/init.rb
|
|
43
|
-
- spec/error_reporter_spec.rb
|
|
44
|
-
- spec/error_spec.rb
|
|
45
|
-
- README.textile
|
|
46
42
|
- lib/failtale-reporter.rb
|
|
47
43
|
- lib/failtale_reporter/adapters/rails.rb
|
|
44
|
+
- lib/failtale_reporter/client.rb
|
|
48
45
|
- lib/failtale_reporter/error.rb
|
|
49
46
|
- lib/failtale_reporter.rb
|
|
50
47
|
- lib/mrhenry-failtale-reporter.rb
|
|
48
|
+
- rails/init.rb
|
|
49
|
+
- spec/error_reporter_spec.rb
|
|
50
|
+
- spec/error_spec.rb
|
|
51
|
+
- README.textile
|
|
51
52
|
has_rdoc: false
|
|
52
53
|
homepage: http://github.com/mrhenry
|
|
53
54
|
post_install_message:
|