class Milkode::GroongaDatabase

Public Class Methods

new() click to toggle source
# File lib/milkode/database/groonga_database.rb, line 17
def initialize
  @database = nil
end

Public Instance Methods

close() click to toggle source
# File lib/milkode/database/groonga_database.rb, line 57
def close
  @database.close
  @database = nil
end
closed?() click to toggle source
# File lib/milkode/database/groonga_database.rb, line 62
def closed?
  @database.nil? or @database.closed?
end
compatible?(filename, no_exit = nil) click to toggle source
# File lib/milkode/database/groonga_database.rb, line 74
    def compatible?(filename, no_exit = nil)
      unless Groonga["documents"] && Groonga["packages"]
        unless no_exit
          puts <<EOF
Milkode repository is old -> #{filename}.
Please rebuild repository, 

  milk rebuild --all

See 'milk --help' or http://milkode.ongaeshi.me .
EOF
          exit -1
        else
          nil
        end
      else
        true
      end
    end
documents() click to toggle source
# File lib/milkode/database/groonga_database.rb, line 66
def documents
  @documents ||= DocumentTable.new(Groonga["documents"])
end
open(base_dir) click to toggle source

ディレクトリを指定して開く

# File lib/milkode/database/groonga_database.rb, line 22
def open(base_dir)
  open_file Dbdir.groonga_path(base_dir)
end
open_file(filename) { |self| ... } click to toggle source

データベースファイルを指定して開く

# File lib/milkode/database/groonga_database.rb, line 27
def open_file(filename)
  if File.exist?(filename)
    @database = Groonga::Database.open(filename)
    compatible?(filename)
    define_schema
  else
    FileUtils.mkdir_p(File.dirname filename)
    @database = Groonga::Database.create(:path => filename)
    define_schema
  end

  @packages = nil
  @documents = nil

  if block_given?
    begin
      yield self
    ensure
      close unless closed?
    end
  end
end
packages() click to toggle source
# File lib/milkode/database/groonga_database.rb, line 70
def packages
  @packages ||= PackageTable.new(Groonga["packages"])
end
yaml_sync(yaml_contents) click to toggle source

あらかじめ GroongaDatabase#open しておく必要がある

# File lib/milkode/database/groonga_database.rb, line 51
def yaml_sync(yaml_contents)
  yaml_contents.each do |yp|
    packages.add(yp.name, yp.directory, yp.options) if packages[yp.name].nil?
  end
end

Private Instance Methods

define_schema() click to toggle source
# File lib/milkode/database/groonga_database.rb, line 96
def define_schema
  DocumentTable.define_schema
  PackageTable.define_schema
end