summaryrefslogtreecommitdiff
path: root/lib/error.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/error.rb')
-rw-r--r--lib/error.rb79
1 files changed, 17 insertions, 62 deletions
diff --git a/lib/error.rb b/lib/error.rb
index 12e22ff..8fe8a1e 100644
--- a/lib/error.rb
+++ b/lib/error.rb
@@ -1,36 +1,19 @@
-require 'open4'
-
-# add additional fields to Exception class to format errors according to OT-API
module OpenToxError
- attr_accessor :http_code, :uri, :error_cause, :metadata
- def initialize(message=nil, uri=nil, cause=nil)
+ attr_accessor :http_code, :message, :cause
+ def initialize message=nil
message = message.to_s.gsub(/\A"|"\Z/, '') if message # remove quotes
- @error_cause = cause ? OpenToxError::cut_backtrace(cause) : short_backtrace
-
super message
- @uri = uri.to_s.sub(%r{//.*:.*@},'//') # remove credentials from uri
- @http_code ||= 500
- @metadata = {
- :type => "ErrorReport",
- :actor => @uri,
- :message => message.to_s,
- :statusCode => @http_code,
- :errorCode => self.class.to_s,
- :errorCause => @error_cause,
- }
- $logger.error("\n"+JSON.pretty_generate(@metadata))
- end
-
-=begin
- # this method defines what is used for to_yaml (override to skip large @rdf graph)
- def encode_with coder
- @rdf.each do |statement|
- coder[statement.predicate.fragment.to_s] = statement.object.to_s
- end
+ @http_code ||= 500
+ @message = message.to_s
+ @cause = cut_backtrace(caller)
+ $logger.error("\n"+JSON.pretty_generate({
+ :http_code => @http_code,
+ :message => @message,
+ :cause => @cause
+ }))
end
-=end
- def self.cut_backtrace(trace)
+ def cut_backtrace(trace)
if trace.is_a?(Array)
cut_index = trace.find_index{|line| line.match(/sinatra|minitest/)}
cut_index ||= trace.size
@@ -41,34 +24,6 @@ module OpenToxError
trace
end
end
-
- def short_backtrace
- backtrace = caller.collect{|line| line unless line =~ /#{File.dirname(__FILE__)}/}.compact
- OpenToxError::cut_backtrace(backtrace)
- end
-
-=begin
- RDF_FORMATS.each do |format|
- # rdf serialization methods for all formats e.g. to_rdfxml
- send :define_method, "to_#{format}".to_sym do
- RDF::Writer.for(format).buffer do |writer|
- @rdf.each{|statement| writer << statement} if @rdf
- end
- end
- end
-
- def to_turtle # redefine to use prefixes (not supported by RDF::Writer)
- prefixes = {:rdf => "http://www.w3.org/1999/02/22-rdf-syntax-ns#"}
- ['OT', 'DC', 'XSD', 'OLO'].each{|p| prefixes[p.downcase.to_sym] = eval("RDF::#{p}.to_s") }
- RDF::Turtle::Writer.for(:turtle).buffer(:prefixes => prefixes) do |writer|
- @rdf.each{|statement| writer << statement} if @rdf
- end
- end
-=end
-
- def to_json
- @metadata.to_json
- end
end
@@ -76,7 +31,7 @@ class RuntimeError
include OpenToxError
end
-# clutters log file with library errors
+# clutters log file with library errors
#class NoMethodError
#include OpenToxError
#end
@@ -86,9 +41,9 @@ module OpenTox
class Error < RuntimeError
include OpenToxError
- def initialize(code, message=nil, uri=nil, cause=nil)
+ def initialize(code, message=nil)
@http_code = code
- super message, uri, cause
+ super message
end
end
@@ -96,15 +51,15 @@ module OpenTox
RestClientWrapper.known_errors.each do |error|
# create error classes
c = Class.new Error do
- define_method :initialize do |message=nil, uri=nil, cause=nil|
- super error[:code], message, uri, cause
+ define_method :initialize do |message=nil|
+ super error[:code], message
end
end
OpenTox.const_set error[:class],c
# define global methods for raising errors, eg. bad_request_error
Object.send(:define_method, error[:method]) do |message,uri=nil,cause=nil|
- raise c.new(message, uri, cause)
+ raise c.new(message)
end
end