Class: Milkode::GroongaDatabase

Inherits:
Object
  • Object
show all
Defined in:
lib/milkode/database/groonga_database.rb

Instance Method Summary collapse

Constructor Details

#initializeGroongaDatabase

Returns a new instance of GroongaDatabase.



18
19
20
# File 'lib/milkode/database/groonga_database.rb', line 18

def initialize
  @database = nil
end

Instance Method Details

#closeObject



58
59
60
61
# File 'lib/milkode/database/groonga_database.rb', line 58

def close
  @database.close
  @database = nil
end

#closed?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/milkode/database/groonga_database.rb', line 63

def closed?
  @database.nil? or @database.closed?
end

#compatible?(filename, no_exit = nil) ⇒ Boolean

Returns:

  • (Boolean)


75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/milkode/database/groonga_database.rb', line 75

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

#documentsObject



67
68
69
# File 'lib/milkode/database/groonga_database.rb', line 67

def documents
  @documents ||= DocumentTable.new(Groonga["documents"])
end

#open(base_dir) ⇒ Object

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



23
24
25
# File 'lib/milkode/database/groonga_database.rb', line 23

def open(base_dir)
  open_file Dbdir.groonga_path(base_dir)
end

#open_file(filename) ⇒ Object

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



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/milkode/database/groonga_database.rb', line 28

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

#packagesObject



71
72
73
# File 'lib/milkode/database/groonga_database.rb', line 71

def packages
  @packages ||= PackageTable.new(Groonga["packages"])
end

#yaml_sync(yaml_contents) ⇒ Object

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



52
53
54
55
56
# File 'lib/milkode/database/groonga_database.rb', line 52

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