class Middleman::CachingProxy::Extension

Attributes

add_to_cache[R]
copy_from_cache[R]

Public Class Methods

new(app, options_hash = {}, &block) click to toggle source
Calls superclass method
# File lib/middleman/caching_proxy/extension.rb, line 39
def initialize(app, options_hash = {}, &block)
  super

  if Semantic::Version.new(Middleman::VERSION).major <= 3
    app.send :include, InstanceMethods
  end

  if !options.cache_key
    raise "Please supply a cache_key value"
  end

  @copy_from_cache = []
  @add_to_cache = []
  @cache = nil
end

Public Instance Methods

add(item) click to toggle source
# File lib/middleman/caching_proxy/extension.rb, line 64
def add(item)
  if cache.has?(item)
    copy_from_cache << item
    true
  else
    add_to_cache << item
    false
  end
end
after_build(_builder) click to toggle source
# File lib/middleman/caching_proxy/extension.rb, line 59
def after_build(_builder)
  copy_new_files_to_cache
  cache.save
end
manipulate_resource_list(resources) click to toggle source
# File lib/middleman/caching_proxy/extension.rb, line 55
def manipulate_resource_list(resources)
  resources + cached_resources
end

Private Instance Methods

cache() click to toggle source
# File lib/middleman/caching_proxy/extension.rb, line 76
def cache
  @cache ||= Cache.new(path: options.cache_directory, key: options.cache_key)
end
cached_resources() click to toggle source
# File lib/middleman/caching_proxy/extension.rb, line 89
def cached_resources
  copy_from_cache.map do |item|
    cached_path = cache.full_path(item: item)
    # TODO: Handle directory_indexes extension
    build_path = relative_build_path(item.path)
    CachedResource.new(
      path: item.path, cached_path: cached_path, build_path: build_path
    )
  end
end
copy_new_files_to_cache() click to toggle source
# File lib/middleman/caching_proxy/extension.rb, line 80
def copy_new_files_to_cache
  add_to_cache.each do |item|
    # Handle directory_indexes extension
    resource = app.sitemap.find_resource_by_path(item.path)
    build_path = relative_build_path(resource.destination_path)
    cache.add item: item, source: build_path
  end
end
relative_build_path(path) click to toggle source
# File lib/middleman/caching_proxy/extension.rb, line 100
def relative_build_path(path)
  File.join("build", path)
end