Class: Erector::Cache

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/erector/cache.rb

Constant Summary collapse

CACHE_NAMESPACE =
'erector'

Instance Method Summary collapse

Instance Method Details

#[](*args) ⇒ Object



13
14
15
# File 'lib/erector/cache.rb', line 13

def [](*args)
  ::Rails.cache.read(transform_key(args))
end

#[]=(*args) ⇒ Object



8
9
10
11
# File 'lib/erector/cache.rb', line 8

def []=(*args)
  value = args.pop
  ::Rails.cache.write(transform_key(args), value.to_s)
end

#delete(*args) ⇒ Object



17
18
19
# File 'lib/erector/cache.rb', line 17

def delete(*args)
  ::Rails.cache.delete(transform_key(args))
end

#transform_key(args) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/erector/cache.rb', line 21

def transform_key(args)
  key = args.reject { |x| x.nil? }

  # If we're on Rails 3, coerce cache keys to array.
  # See changes to the retrieve_cache_key method here:
  # http://apidock.com/rails/v4.0.2/ActiveSupport/Cache/retrieve_cache_key/class
  if Gem::Version.new(::Rails.version) < Gem::Version.new('4.0.0')
    key = key.map do |x|
      if !x.respond_to?(:cache_key) && !x.is_a?(Array) && x.respond_to?(:to_a)
        x.to_a
      else
        x
      end
    end
  end

  ActiveSupport::Cache.expand_cache_key(key, CACHE_NAMESPACE)
end