Module: ActiveSupport::Cache::Strategy::LocalCache
- Defined in:
- lib/active_support/cache/strategy/local_cache.rb
Overview
Caches that implement LocalCache will be backed by an in memory cache for the duration of a block. Repeated calls to the cache for the same key will hit the in memory cache for faster access.
Defined Under Namespace
Classes: LocalStore
Instance Method Summary collapse
-
#cleanup(options = nil) ⇒ Object
:nodoc:.
-
#clear(options = nil) ⇒ Object
:nodoc:.
-
#decrement(name, amount = 1, options = nil) ⇒ Object
:nodoc:.
-
#increment(name, amount = 1, options = nil) ⇒ Object
:nodoc:.
-
#middleware ⇒ Object
Middleware class can be inserted as a Rack handler to be local cache for the duration of request.
-
#with_local_cache ⇒ Object
Use a local cache for the duration of block.
Instance Method Details
#cleanup(options = nil) ⇒ Object
:nodoc:
86 87 88 89 |
# File 'lib/active_support/cache/strategy/local_cache.rb', line 86 def cleanup( = nil) # :nodoc: local_cache.clear() if local_cache super end |
#clear(options = nil) ⇒ Object
:nodoc:
81 82 83 84 |
# File 'lib/active_support/cache/strategy/local_cache.rb', line 81 def clear( = nil) # :nodoc: local_cache.clear() if local_cache super end |
#decrement(name, amount = 1, options = nil) ⇒ Object
:nodoc:
105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/active_support/cache/strategy/local_cache.rb', line 105 def decrement(name, amount = 1, = nil) # :nodoc: value = bypass_local_cache{super} if local_cache local_cache.mute do if value local_cache.write(name, value, ) else local_cache.delete(name, ) end end end value end |
#increment(name, amount = 1, options = nil) ⇒ Object
:nodoc:
91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/active_support/cache/strategy/local_cache.rb', line 91 def increment(name, amount = 1, = nil) # :nodoc: value = bypass_local_cache{super} if local_cache local_cache.mute do if value local_cache.write(name, value, ) else local_cache.delete(name, ) end end end value end |
#middleware ⇒ Object
Middleware class can be inserted as a Rack handler to be local cache for the duration of request.
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/active_support/cache/strategy/local_cache.rb', line 55 def middleware @middleware ||= begin klass = Class.new klass.class_eval(<<-EOS, __FILE__, __LINE__ + 1) class << self def name "ActiveSupport::Cache::Strategy::LocalCache" end alias :to_s :name end def initialize(app) @app = app end def call(env) Thread.current[:#{thread_local_key}] = LocalStore.new @app.call(env) ensure Thread.current[:#{thread_local_key}] = nil end EOS klass end end |
#with_local_cache ⇒ Object
Use a local cache for the duration of block.
43 44 45 46 47 48 49 50 51 |
# File 'lib/active_support/cache/strategy/local_cache.rb', line 43 def with_local_cache save_val = Thread.current[thread_local_key] begin Thread.current[thread_local_key] = LocalStore.new yield ensure Thread.current[thread_local_key] = save_val end end |