class Tr8n::Cache
Public Class Methods
cache()
click to toggle source
# File lib/tr8n/cache.rb, line 31 def self.cache return nil unless enabled? @cache ||= begin if Tr8n::Config.cache_adapter == 'ActiveSupport::Cache' store_params = cache_store_params store_params[0] = store_params[0].to_sym ActiveSupport::Cache.lookup_store(*store_params) else eval(Tr8n::Config.cache_adapter) end end end
cache_store_params()
click to toggle source
# File lib/tr8n/cache.rb, line 27 def self.cache_store_params [Tr8n::Config.cache_store].flatten end
cleanup(opts = nil)
click to toggle source
# File lib/tr8n/cache.rb, line 96 def self.cleanup(opts = nil) return unless enabled? cache.cleanup(opts) end
clear(opts = nil)
click to toggle source
# File lib/tr8n/cache.rb, line 91 def self.clear(opts = nil) return unless enabled? cache.clear(opts) end
decrement(name, amount = 1, opts = nil)
click to toggle source
# File lib/tr8n/cache.rb, line 106 def self.decrement(name, amount = 1, opts = nil) return unless enabled? cache.decrement(name, amount, opts) end
delete(key, opts = nil)
click to toggle source
# File lib/tr8n/cache.rb, line 78 def self.delete(key, opts = nil) return unless enabled? # pp "delete #{key}" cache.delete(versioned_key(key), opts) end
disabled?()
click to toggle source
# File lib/tr8n/cache.rb, line 49 def self.disabled? not enabled? end
enabled?()
click to toggle source
# File lib/tr8n/cache.rb, line 45 def self.enabled? Tr8n::Config.enable_caching? end
exist?(name, opts = nil)
click to toggle source
# File lib/tr8n/cache.rb, line 86 def self.exist?(name, opts = nil) return unless enabled? cache.exists?(name, opts) end
fetch(key, opts = {}) { || ... }
click to toggle source
Cache
Adapter Methods
# File lib/tr8n/cache.rb, line 68 def self.fetch(key, opts = {}) return yield unless enabled? # pp "fetch #{key}" cache.fetch(versioned_key(key), opts) do yield end end
increment(name, amount = 1, opts = nil)
click to toggle source
# File lib/tr8n/cache.rb, line 101 def self.increment(name, amount = 1, opts = nil) return unless enabled? cache.increment(name, amount, opts) end
invalidate_source(source_name, language = Tr8n::Config.current_language)
click to toggle source
# File lib/tr8n/cache.rb, line 125 def self.invalidate_source(source_name, language = Tr8n::Config.current_language) return if disabled? or language.default? # only memory store needs this kind of reloading # memcached and other stores will expire shared keys return unless memory_store? # pp [:memory_times, sources_timestamps] translation_source = Tr8n::TranslationSource.find_or_create(source_name) # this is the only record that will never be cached and will always be loaded from the database translation_source_language = Tr8n::TranslationSourceLanguage.find_or_create(translation_source, language) if last_updated_at(translation_source_language) < translation_source_language.updated_at keys = Tr8n::TranslationKey.where(["id in (select translation_key_id from #{Tr8n::TranslationKeySource.table_name} where translation_source_id = ?) and updated_at > ?", translation_source.id, last_updated_at(translation_source_language)]) # pp "****************************** Found #{keys.count} outdated keys for this language" keys.each do |key| key.clear_translations_cache_for_language(language) end sources_timestamps[translation_source_language.id] = translation_source_language.updated_at end end
last_updated_at(translation_source_language)
click to toggle source
# File lib/tr8n/cache.rb, line 121 def self.last_updated_at(translation_source_language) sources_timestamps[translation_source_language.id] ||= 365.days.ago end
memory_store?()
click to toggle source
# File lib/tr8n/cache.rb, line 61 def self.memory_store? cache_store_params.first == 'memory_store' end
sources_timestamps()
click to toggle source
For local cache, the source+language = updated_at must always be present These keys cannot expire, or refreshing of the resources will never take place
# File lib/tr8n/cache.rb, line 117 def self.sources_timestamps @sources_timestamps ||= {} end
version()
click to toggle source
# File lib/tr8n/cache.rb, line 53 def self.version Tr8n::Config.cache_version end
versioned_key(key)
click to toggle source
# File lib/tr8n/cache.rb, line 57 def self.versioned_key(key) "#{version}_#{key}" end