Class: SkipEmbedded::FulltextSearchCache::Mediator

Inherits:
Object
  • Object
show all
Defined in:
lib/skip_embedded/fulltext_search_cache/mediator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Mediator

Returns a new instance of Mediator.



9
10
11
12
13
14
15
16
17
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 9

def initialize(options = {})
  @options = SkipEmbedded::FulltextSearchCache::DEFAULT_OPTIONS.merge(options)
  @cache_dir = @options[:cache_dir]
  @built = []

  if since = @options[:since]
    @since = Integer(since).minutes.ago
  end
end

Instance Attribute Details

#builtObject (readonly)

Returns the value of attribute built.



8
9
10
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 8

def built
  @built
end

#cache_dirObject (readonly)

Returns the value of attribute cache_dir.



8
9
10
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 8

def cache_dir
  @cache_dir
end

Instance Method Details

#build(model, builder) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 27

def build(model, builder)
  prepare_dir(model.name.underscore)

  if @since
    model = model.scoped(:conditions => ["#{model.quoted_table_name}.updated_at > ?", @since])
  end

  loader(model).each do |obj|
    b = builder.new(obj)
    b.write_cache(self)
    b.write_meta(self)
    built << "#{obj.class.name}:#{obj.id}"
  end
end

#cache_path(builder) ⇒ Object



46
47
48
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 46

def cache_path(builder)
  File.expand_path(builder.filename, cache_dir)
end

#finishObject



19
20
21
22
23
24
25
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 19

def finish
  if built.empty?
    @options[:logger].info{ "[FULLTEXT_SEARCH_CACHE] no model to built cache" }
  else
    @options[:logger].info{ "[FULLTEXT_SEARCH_CACHE] built for #{built.join(", ")}" }
  end
end

#loader(model) ⇒ Object



42
43
44
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 42

def loader(model)
  PartialLoader.new(model, @options[:limit])
end

#meta_dirObject



54
55
56
57
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 54

def meta_dir
  dir, base = File.split(cache_dir)
  File.expand_path(base + "_meta", dir)
end

#meta_path(builder) ⇒ Object



50
51
52
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 50

def meta_path(builder)
  File.expand_path(builder.filename, meta_dir)
end

#prepare_dir(name) ⇒ Object



59
60
61
62
63
64
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 59

def prepare_dir(name)
  [cache_dir, meta_dir].each do |dir|
    d = File.expand_path(File.join(dir, name), cache_dir)
    FileUtils.mkdir_p(d) unless File.directory?(d)
  end
end