Class: SkipEmbedded::FulltextSearchCache::Mediator
- Inherits:
-
Object
- Object
- SkipEmbedded::FulltextSearchCache::Mediator
- Defined in:
- lib/skip_embedded/fulltext_search_cache/mediator.rb
Instance Attribute Summary collapse
-
#built ⇒ Object
readonly
Returns the value of attribute built.
-
#cache_dir ⇒ Object
readonly
Returns the value of attribute cache_dir.
Instance Method Summary collapse
- #build(model, builder) ⇒ Object
- #cache_path(builder) ⇒ Object
- #finish ⇒ Object
-
#initialize(options = {}) ⇒ Mediator
constructor
A new instance of Mediator.
- #loader(model) ⇒ Object
- #meta_dir ⇒ Object
- #meta_path(builder) ⇒ Object
- #prepare_dir(name) ⇒ Object
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 = SkipEmbedded::FulltextSearchCache::DEFAULT_OPTIONS.merge() @cache_dir = @options[:cache_dir] @built = [] if since = @options[:since] @since = Integer(since).minutes.ago end end |
Instance Attribute Details
#built ⇒ Object (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_dir ⇒ Object (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.(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.(builder.filename, cache_dir) end |
#finish ⇒ Object
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_dir ⇒ Object
54 55 56 57 |
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 54 def dir, base = File.split(cache_dir) File.(base + "_meta", dir) end |
#meta_path(builder) ⇒ Object
50 51 52 |
# File 'lib/skip_embedded/fulltext_search_cache/mediator.rb', line 50 def (builder) File.(builder.filename, ) 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, ].each do |dir| d = File.(File.join(dir, name), cache_dir) FileUtils.mkdir_p(d) unless File.directory?(d) end end |