summaryrefslogtreecommitdiff
path: root/storage/mroonga/vendor/groonga/lib/mrb/scripts/context.rb
blob: 8ebe2c913b44f4f7d4b1c867dda5923f9ac353e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module Groonga
  class Context
    def guard(fallback=nil)
      begin
        yield
      rescue => error
        logger.log_error(error)
        fallback
      end
    end

    def logger
      @logger ||= Logger.new
    end

    def record_error(rc, error)
      rc = RC.find(rc) if rc.is_a?(Symbol)
      self.rc = rc.to_i
      self.error_level = ErrorLevel.find(:error).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

      logger.log_error(error)
    end
  end
end