Sha256: b0274ad7c1360f899066b531c3def5ef10887b3850b989ca17507d383d6223bd

Contents?: true

Size: 1.38 KB

Versions: 10

Compression:

Stored size: 1.38 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 query_logger
      @query_logger ||= QueryLogger.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

    def with_command_version(version)
      old_version = command_version
      begin
        self.command_version = version
        yield
      ensure
        self.command_version = old_version
      end
    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-6.0.7-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.7-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.5-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.5-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.4-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.4-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.2-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.2-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.0-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb
rroonga-6.0.0-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/context.rb