/
index_bundle.rb
50 lines (38 loc) · 961 Bytes
/
index_bundle.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Comfortable API convenience class, splits methods to indexes.
#
class IndexBundle # :nodoc:all
attr_reader :indexes, :index_mapping, :indexing, :indexed
delegate :size,
:each,
:to => :indexes
delegate :analyze,
:reload,
:load_from_cache,
:to => :indexed
delegate :check_caches,
:find,
:generate_cache_only,
:generate_index_only,
:index,
:index_for_tests,
:to => :indexing
def initialize
@indexes = []
@index_mapping = {}
@indexed = Indexed::Indexes.new
@indexing = Indexing::Indexes.new
end
def to_s
indexes.map &:to_stats
end
def register index
self.indexes << index
self.index_mapping[index.name] = index
indexing.register index.internal_indexing
indexed.register index.internal_indexed
end
def [] name
name = name.to_sym
self.index_mapping[name]
end
end