Class: ActionView::Resolver::Cache
- Inherits:
-
Object
- Object
- ActionView::Resolver::Cache
- Defined in:
- lib/action_view/template/resolver.rb
Overview
Threadsafe template cache
Defined Under Namespace
Classes: SmallCache
Constant Summary collapse
- PARTIAL_BLOCK =
Preallocate all the default blocks for performance/memory consumption reasons
lambda { |cache, partial| cache[partial] = SmallCache.new }
- PREFIX_BLOCK =
lambda { |cache, prefix| cache[prefix] = SmallCache.new(&PARTIAL_BLOCK) }
- NAME_BLOCK =
lambda { |cache, name| cache[name] = SmallCache.new(&PREFIX_BLOCK) }
- KEY_BLOCK =
lambda { |cache, key| cache[key] = SmallCache.new(&NAME_BLOCK) }
- NO_TEMPLATES =
Usually a majority of template look ups return nothing, use this canonical preallocated array to save memory
[].freeze
Instance Method Summary collapse
-
#cache(key, name, prefix, partial, locals) ⇒ Object
Cache the templates returned by the block.
-
#cache_query(query) ⇒ Object
:nodoc:.
- #clear ⇒ Object
-
#initialize ⇒ Cache
constructor
A new instance of Cache.
- #inspect ⇒ Object
-
#size ⇒ Object
Get the cache size.
Constructor Details
#initialize ⇒ Cache
Returns a new instance of Cache.
90 91 92 93 |
# File 'lib/action_view/template/resolver.rb', line 90 def initialize @data = SmallCache.new(&KEY_BLOCK) @query_cache = SmallCache.new end |
Instance Method Details
#cache(key, name, prefix, partial, locals) ⇒ Object
Cache the templates returned by the block
100 101 102 |
# File 'lib/action_view/template/resolver.rb', line 100 def cache(key, name, prefix, partial, locals) @data[key][name][prefix][partial][locals] ||= canonical_no_templates(yield) end |
#cache_query(query) ⇒ Object
:nodoc:
104 105 106 |
# File 'lib/action_view/template/resolver.rb', line 104 def cache_query(query) # :nodoc: @query_cache[query] ||= canonical_no_templates(yield) end |
#clear ⇒ Object
108 109 110 111 |
# File 'lib/action_view/template/resolver.rb', line 108 def clear @data.clear @query_cache.clear end |
#inspect ⇒ Object
95 96 97 |
# File 'lib/action_view/template/resolver.rb', line 95 def inspect "#{to_s[0..-2]} keys=#{@data.size} queries=#{@query_cache.size}>" end |
#size ⇒ Object
Get the cache size. Do not call this method. This method is not guaranteed to be here ever.
115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/action_view/template/resolver.rb', line 115 def size # :nodoc: size = 0 @data.each_value do |v1| v1.each_value do |v2| v2.each_value do |v3| v3.each_value do |v4| size += v4.size end end end end size + @query_cache.size end |