class Nucleon::Util::Cache

Public Class Methods

new(root_path, id, cache_dir = '.cache', force = true) click to toggle source
Calls superclass method Nucleon::Core::new
   # File lib/core/util/cache.rb
16 def initialize(root_path, id, cache_dir = '.cache', force = true)
17   super({}, {}, force)
18 
19   @cache_dir  = cache_dir
20   @cache_root = File.join(root_path, cache_dir)
21   FileUtils.mkdir_p(base_path) unless File.directory?(base_path)
22 
23   @cache_id         = id.to_sym
24   @cache_translator = Nucleon.type_default(:nucleon, :translator)
25   @cache_filename   = "#{id}.#{translator}"
26   @cache_path       = File.join(@cache_root, @cache_filename)
27 
28   unless File.exist?(file)
29     parser = Nucleon.translator({}, translator)
30     Disk.write(file, parser.generate({}))
31   end
32   load
33 end

Public Instance Methods

base_path() click to toggle source
   # File lib/core/util/cache.rb
44 def base_path
45   @cache_root
46 end
clear() click to toggle source
Calls superclass method Nucleon::Config#clear
    # File lib/core/util/cache.rb
103 def clear
104   result = super
105   save if initialized?
106   result
107 end
delete(keys, default = nil) click to toggle source
Calls superclass method Nucleon::Config#delete
   # File lib/core/util/cache.rb
95 def delete(keys, default = nil)
96   result = super
97   save if initialized?
98   result
99 end
directory_name() click to toggle source
   # File lib/core/util/cache.rb
50 def directory_name
51   @cache_dir
52 end
file() click to toggle source
   # File lib/core/util/cache.rb
68 def file
69   @cache_path
70 end
get(keys, default = nil, format = false) click to toggle source
Calls superclass method Nucleon::Config#get
   # File lib/core/util/cache.rb
74 def get(keys, default = nil, format = false)
75   result = super(keys, nil)
76 
77   if result.nil?
78     load
79     result = super(keys, nil)
80   end
81   result = filter(default, format) if result.nil?
82   result
83 end
id() click to toggle source
   # File lib/core/util/cache.rb
56 def id
57   @cache_id
58 end
import_base(properties, options = {}) click to toggle source
Calls superclass method Nucleon::Config#import_base
    # File lib/core/util/cache.rb
112 def import_base(properties, options = {})
113   config = Config.ensure(options)
114 
115   result = super
116   save if initialized? && ! config.get(:no_save, false)
117   result
118 end
load() click to toggle source
    # File lib/core/util/cache.rb
122 def load
123   success = false
124   @status = 255
125 
126   @@cache_lock.synchronize do
127     logger.info("Loading #{translator} translated cache from #{file}")
128 
129     parser = Nucleon.translator({}, translator)
130     raw    = Disk.read(file)
131 
132     if parser && raw && ! raw.empty?
133       logger.debug("Cache file contents: #{raw}")
134       parse_properties = Data.hash(parser.parse(raw))
135 
136       Nucleon.remove_plugin(parser)
137 
138       import(parse_properties, { :no_save => true }) unless parse_properties.empty?
139       success = true
140       @status = Nucleon.code.success
141     end
142   end
143   success
144 end
save() click to toggle source
    # File lib/core/util/cache.rb
148 def save
149   success = false
150   @status = 255
151 
152   @@cache_lock.synchronize do
153     if renderer = Nucleon.translator({}, translator)
154       rendering = renderer.generate(export)
155 
156       Nucleon.remove_plugin(renderer)
157 
158       if Disk.write(file, rendering)
159         success = true
160         @status = Nucleon.code.success
161       end
162     end
163   end
164   success
165 end
set(keys, value, delete_nil = false) click to toggle source
Calls superclass method Nucleon::Config#set
   # File lib/core/util/cache.rb
87 def set(keys, value, delete_nil = false)
88   result = super
89   save if initialized?
90   result
91 end
status() click to toggle source
   # File lib/core/util/cache.rb
38 def status
39   @status
40 end
translator() click to toggle source
   # File lib/core/util/cache.rb
62 def translator
63   @cache_translator
64 end