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