From: Michal Fojtik <[email protected]> Instead of using $stderr directly, use Ruby Logger class to wrap them. In future it will be easier to redirect to 'errors.log'.
Signed-off-by: Michal fojtik <[email protected]> --- server/lib/deltacloud/drivers/exceptions.rb | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/server/lib/deltacloud/drivers/exceptions.rb b/server/lib/deltacloud/drivers/exceptions.rb index 1a635ce..57b57ef 100644 --- a/server/lib/deltacloud/drivers/exceptions.rb +++ b/server/lib/deltacloud/drivers/exceptions.rb @@ -178,6 +178,11 @@ module Deltacloud end end + def self.logger(logger=nil) + @logger ||= logger + @logger || ::Logger.new($stderr) + end + def self.included(klass) klass.extend(DSL) end @@ -185,22 +190,21 @@ module Deltacloud def safely(&block) begin block.call - rescue - report_method = $stderr.respond_to?(:err) ? :err : :puts + rescue => e self.class.exceptions.each do |exdef| - if exdef.match?($!) - new_exception = exdef.handler($!) - m = (new_exception && !new_exception.message.nil?) ? new_exception.message : $!.message + if exdef.match?(e) + new_exception = exdef.handler(e) + m = (new_exception && !new_exception.message.nil?) ? new_exception.message : e.message unless ENV['RACK_ENV'] == 'test' - $stderr.send(report_method, "#{[$!.class.to_s, m].join(':')}\n#{$!.backtrace[0..10].join("\n")}") + ExceptionHandler.logger.error "#{[e.class.to_s, m].join(':')}\n#{e.backtrace[0..10].join("\n")}" end - raise exdef.handler($!) unless new_exception.nil? + raise exdef.handler(e) unless new_exception.nil? end end unless ENV['RACK_ENV'] == 'test' - $stderr.send(report_method, "[NO HANDLED] #{[$!.class.to_s, $!.message].join(': ')}\n#{$!.backtrace.join("\n")}") + ExceptionHandler.logger.error "[NO HANDLED] #{[e.class.to_s, e.message].join(': ')}\n#{e.backtrace.join("\n")}" end - raise Deltacloud::ExceptionHandler::BackendError.new($!, "Unhandled exception or status code (#{$!.message})") + raise ExceptionHandler::BackendError.new(e, "Unhandled exception or status code (#{e.message})") end end -- 1.7.12
