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

Reply via email to