[Groonga-commit] groonga/groonga at 823b80e [master] mrb: support specified rc by raising error

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Feb 3 11:41:01 JST 2015


Kouhei Sutou	2015-02-03 11:41:01 +0900 (Tue, 03 Feb 2015)

  New Revision: 823b80e7b0e685de96a702477ee6327ff983bece
  https://github.com/groonga/groonga/commit/823b80e7b0e685de96a702477ee6327ff983bece

  Message:
    mrb: support specified rc by raising error

  Modified files:
    lib/mrb/scripts/command.rb
    lib/mrb/scripts/context.rb

  Modified: lib/mrb/scripts/command.rb (+3 -0)
===================================================================
--- lib/mrb/scripts/command.rb    2015-02-03 11:40:28 +0900 (df69175)
+++ lib/mrb/scripts/command.rb    2015-02-03 11:41:01 +0900 (532ec39)
@@ -19,6 +19,9 @@ module Groonga
     def run_internal(input)
       begin
         run_body(input)
+      rescue GroongaError => groonga_error
+        context.set_groonga_error(groonga_error)
+        nil
       rescue => error
         context.record_error(:command_error, error)
         nil

  Modified: lib/mrb/scripts/context.rb (+22 -8)
===================================================================
--- lib/mrb/scripts/context.rb    2015-02-03 11:40:28 +0900 (e8056bd)
+++ lib/mrb/scripts/context.rb    2015-02-03 11:41:01 +0900 (042faaf)
@@ -16,19 +16,33 @@ module Groonga
       @logger ||= Logger.new
     end
 
+    def set_groonga_error(groonga_error)
+      set_error_raw(groonga_error.class.rc,
+                    ErrorLevel::ERROR,
+                    groonga_error.message,
+                    groonga_error.backtrace)
+    end
+
     def record_error(rc, error)
       rc = RC.find(rc) if rc.is_a?(Symbol)
+      set_error_raw(rc, ErrorLevel::ERROR, error.message, error.backtrace)
+
+      logger.log_error(error)
+    end
+
+    private
+    def set_error_raw(rc, error_level, message, backtrace)
       self.rc = rc.to_i
-      self.error_level = ErrorLevel.find(:error).to_i
+      self.error_level = error_level.to_i
 
-      backtrace = error.backtrace
-      entry = BacktraceEntry.parse(backtrace.first)
-      self.error_file = entry.file
-      self.error_line = entry.line
-      self.error_method = entry.method
-      self.error_message = error.message
+      self.error_message = message
 
-      logger.log_error(error)
+      if backtrace
+        entry = BacktraceEntry.parse(backtrace.first)
+        self.error_file = entry.file
+        self.error_line = entry.line
+        self.error_method = entry.method
+      end
     end
   end
 end
-------------- next part --------------
HTML����������������������������...
Descargar 



More information about the Groonga-commit mailing list
Back to archive index