Sha256: fd3fbde21579c9847ec58f92bf9df2904cb732e98c64ba676d15b6e4b3180b0c

Contents?: true

Size: 1.11 KB

Versions: 10

Compression:

Stored size: 1.11 KB

Contents

require "context/error_level"
require "context/rc"

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 writer
      @writer ||= Writer.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 = error_level.to_i

      self.error_message = message

      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

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
rroonga-5.0.4-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.4-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.3-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.3-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.2-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.2-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.1-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.1-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.0-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-5.0.0-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb