class Assets::Environment::Cache
Environment
that caches assets
Attributes
environment[R]
Return inner environment
@return [Environment]
@api private
Public Class Methods
build(rules)
click to toggle source
Build cache environemnt
@param [Enumerable<Rules>] rules
@return [Cache]
@api private
# File lib/assets/environment/cache.rb, line 23 def self.build(rules) new(Dynamic.new(rules)) end
new(environment)
click to toggle source
Initialize object
@param [Environment] environment
@return [undefined]
@api private
# File lib/assets/environment/cache.rb, line 35 def initialize(environment) @environment, @cache = environment, {} end
Public Instance Methods
get(name)
click to toggle source
Return asset
@param [String] name
@return [Asset]
if found
@return [nil]
otherwise
# File lib/assets/environment/cache.rb, line 65 def get(name) rule = rule(name) return unless rule asset = @cache.fetch(name) do return miss(rule) end hit(rule, asset) end
rule(name)
click to toggle source
Return rule
@param [String] name
@return [Rule]
if found
@return [nil]
otherwise
@api private
# File lib/assets/environment/cache.rb, line 51 def rule(name) environment.rule(name) end
Private Instance Methods
hit(rule, asset)
click to toggle source
Process cache hit
@param [Rule] rule @param [Asset] asset
@return [Asset]
@api private
# File lib/assets/environment/cache.rb, line 87 def hit(rule, asset) if rule.fresh_at?(asset.created_at) return asset end miss(rule) end
miss(rule)
click to toggle source
Process cache miss
@param [Rule] rule
@return [Asset]
if found
@return [nil]
otherwise
@api private
# File lib/assets/environment/cache.rb, line 107 def miss(rule) @cache[rule.name] = rule.asset end