class Rack::AcornCache::Configuration

Attributes

cache_everything[RW]
default_acorn_cache_ttl[RW]
default_browser_cache_ttl[RW]
default_ignore_query_params[RW]
default_must_revalidate[RW]
page_rules[R]
storage[W]

Public Class Methods

new() click to toggle source
# File lib/acorn_cache/config.rb, line 17
def initialize
  @cache_everything = false
  @storage = :redis
end

Public Instance Methods

page_rule_for_url(url) click to toggle source
# File lib/acorn_cache/config.rb, line 28
def page_rule_for_url(url)
  if cache_everything
    return default_page_rule unless page_rules
    no_page_rule_found = proc { return default_page_rule }
  else
    return nil unless page_rules
    no_page_rule_found = proc { return nil }
  end

  page_rules.find(no_page_rule_found) do |k, _|
    page_rule_key_matches_url?(k, url)
  end.last
end
page_rules=(user_page_rules) click to toggle source
# File lib/acorn_cache/config.rb, line 22
def page_rules=(user_page_rules)
  @page_rules = user_page_rules.each_with_object({}) do |(k, v), result|
    result[k] = build_page_rule(v)
  end
end
storage() click to toggle source
# File lib/acorn_cache/config.rb, line 42
def storage
  if @storage == :redis
    Rack::AcornCache::Storage.redis
  elsif @storage == :memcached
    Rack::AcornCache::Storage.memcached
  end
end

Private Instance Methods

build_page_rule(options) click to toggle source
# File lib/acorn_cache/config.rb, line 59
def build_page_rule(options)
  options[:ignore_query_params] = default_ignore_query_params

  return options if options[:respect_existing_headers] || options[:must_revalidate]
  { acorn_cache_ttl: default_acorn_cache_ttl,
    browser_cache_ttl: default_browser_cache_ttl }.merge(options)
end
default_page_rule() click to toggle source
# File lib/acorn_cache/config.rb, line 52
def default_page_rule
  { acorn_cache_ttl: default_acorn_cache_ttl,
    browser_cache_ttl: default_browser_cache_ttl,
    ignore_query_params: default_ignore_query_params,
    must_revalidate: default_must_revalidate }
end
page_rule_key_matches_url?(page_rule_key, url) click to toggle source
# File lib/acorn_cache/config.rb, line 67
def page_rule_key_matches_url?(page_rule_key, url)
  return url =~ page_rule_key if page_rule_key.is_a?(Regexp)
  string = page_rule_key.gsub("*", ".*")
  url =~ /^#{string}$/
end