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