Sha256: e550909550ae4630162f96be8c165dd3a34bd431110440d01819c9b5bf549d89
Contents?: true
Size: 1.6 KB
Versions: 16
Compression:
Stored size: 1.6 KB
Contents
module Isomorfeus module Data class FerretAccelerator def self.finalize(fer_acc) proc { fer_acc.close_index } end attr_reader :doc_class, :doc_class_name, :doc_class_name_u attr_accessor :index def initialize(doc_class, &block) @doc_class = doc_class @doc_class_name = doc_class.name @doc_class_name_u = @doc_class_name.underscore if block_given? res = block.call(self) @index = res unless @index else open_index end ObjectSpace.define_finalizer(self, self.class.finalize(self)) end def destroy_index close_index FileUtils.rm_rf(index_path(doc_class_name)) end def close_index @index.close end def create_doc(document) @index.add_document(document) end def destroy_doc(id) @index.delete(id) true end def load_doc(id) @index.doc(id)&.load end def save_doc(id, document) @index.update(id, document) end def search_each(query, options, &block) @index.search_each(query, options, &block) end private def index_path File.expand_path(File.join(Isomorfeus.data_documents_path, @doc_class_name_u)) end def open_index FileUtils.mkdir_p(Isomorfeus.data_documents_path) unless Dir.exist?(Isomorfeus.data_documents_path) @index = Isomorfeus::Ferret::Index::Index.new(path: index_path, id_field: :key) end end end end
Version data entries
16 entries across 16 versions & 1 rubygems