Module: CacheMachine::Cache::Map::InstanceMethods
- Defined in:
- lib/cache_machine/cache/map.rb
Instance Method Summary collapse
-
#cache_key_of(_member, options = {}) ⇒ String
Returns cache key of the member.
-
#delete_all_caches ⇒ Object
Removes all caches using map.
-
#delete_cache_of(_member) ⇒ Object
Recursively deletes cache by map starting from the member.
-
#delete_cache_of_only(_member) ⇒ Object
Deletes cache of the only member ignoring cache map.
-
#fetch_cache_of(_member, options = {}, &block) ⇒ *
Fetches cache of the member.
-
#reset_timestamp_of(anything) ⇒ Object
Deletes cache of anything from memory.
-
#timestamp_key_of(anything) ⇒ String
Returns timestamp cache key for anything.
-
#timestamp_of(anything) ⇒ String
Returns timestamp of anything from memcached.
-
#timestamped_key_of(anything, options = {}) ⇒ String
Returns cache key of
anythingwith timestamp attached.
Instance Method Details
#cache_key_of(_member, options = {}) ⇒ String
Returns cache key of the member.
136 137 138 139 140 141 142 143 144 145 |
# File 'lib/cache_machine/cache/map.rb', line 136 def cache_key_of _member, = {} = instance_eval(&[:timestamp]) if .has_key? :timestamp [ self.class.name, self.to_param, _member, [:format], [:page] || 1, ].flatten.compact.join '/' end |
#delete_all_caches ⇒ Object
Removes all caches using map.
181 182 183 |
# File 'lib/cache_machine/cache/map.rb', line 181 def delete_all_caches self.class.cache_map.to_a.flatten.uniq.each &method(:delete_cache_of) end |
#delete_cache_of(_member) ⇒ Object
Recursively deletes cache by map starting from the member.
188 189 190 191 192 193 |
# File 'lib/cache_machine/cache/map.rb', line 188 def delete_cache_of _member delete_cache_of_only _member if chain = self.class.cache_map[_member] [*chain].each &method(:delete_cache_of) end end |
#delete_cache_of_only(_member) ⇒ Object
Deletes cache of the only member ignoring cache map.
198 199 200 201 202 203 204 205 206 |
# File 'lib/cache_machine/cache/map.rb', line 198 def delete_cache_of_only _member CacheMachine::Cache.formats.each do |cache_format| page_nr = 0; begin cache_key = cache_key_of(_member, {:format => cache_format, :page => page_nr += 1}) CacheMachine::Logger.info "CACHE_MACHINE (delete_cache_of_only): deleting '#{cache_key}'" end while Rails.cache.delete(cache_key) end _member end |
#fetch_cache_of(_member, options = {}, &block) ⇒ *
Fetches cache of the member.
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/cache_machine/cache/map.rb', line 157 def fetch_cache_of _member, = {}, &block if CacheMachine::Cache::enabled? expires_in = if expires_at = [:expires_at] if expires_at.kind_of? Proc expires_at = expires_at.call end if expires_at.kind_of? Time expires_at - Time.zone.now else raise ArgumentError, "expires_at is not a Time" end else [:expires_in] end CacheMachine::Logger.info "CACHE_MACHINE (fetch_cache_of): reading '#{cache_key}'." Rails.cache.fetch(cache_key_of(_member, ), :expires_in => expires_in, &block) else yield end end |
#reset_timestamp_of(anything) ⇒ Object
Deletes cache of anything from memory.
240 241 242 243 244 |
# File 'lib/cache_machine/cache/map.rb', line 240 def anything cache_key = anything CacheMachine::Logger.info "CACHE_MACHINE (reset_timestamp_of): deleting '#{cache_key}'." Rails.cache.delete(cache_key) end |
#timestamp_key_of(anything) ⇒ String
Returns timestamp cache key for anything.
213 214 215 |
# File 'lib/cache_machine/cache/map.rb', line 213 def anything [self.class.name, self.to_param, anything, 'timestamp'].join '/' end |
#timestamp_of(anything) ⇒ String
Returns timestamp of anything from memcached.
222 223 224 225 226 227 228 229 230 |
# File 'lib/cache_machine/cache/map.rb', line 222 def anything if CacheMachine::Cache::enabled? key = anything CacheMachine::Logger.info "CACHE_MACHINE (timestamp_of): reading timestamp '#{key}'." Rails.cache.fetch(key) { Time.zone.now.to_i.to_s } else Time.zone.now.to_i.to_s end end |
#timestamped_key_of(anything, options = {}) ⇒ String
Returns cache key of anything with timestamp attached.
235 236 237 |
# File 'lib/cache_machine/cache/map.rb', line 235 def anything, = {} [cache_key_of(anything, ), (anything)].join '/' end |