Class: Innate::Cache
- Inherits:
-
Object
- Object
- Innate::Cache
- Includes:
- Optioned
- Defined in:
- lib/innate/cache.rb,
lib/innate/cache/api.rb,
lib/innate/cache/drb.rb,
lib/innate/cache/yaml.rb,
lib/innate/cache/memory.rb,
lib/innate/cache/marshal.rb,
lib/innate/cache/file_based.rb
Overview
Cache manager and wrapper.
Provides a convenient wrapper around caches to keep method name confusion at a minimum while still having short and meaningful method names for every cache instance.
The default caching is specified in lib/innate.rb in the config section. At the time of writing it defaults to Innate::Cache::Memory but can be changed easily.
Configuration has to be done before Innate::setup_dependencies is being called.
Configuration:
Innate::Cache. do |cache|
cache.names = [:session, :user]
cache.session = Innate::Cache::Marshal
cache.user = Innate::Cache::YAML
end
Usage for storing:
# Storing with a time to live (10 seconds)
Innate::Cache.user.store(:manveru, "Michael Fellinger", :ttl => 10)
# Storing indefinitely
Innate::Cache.user[:Pistos] = "unknown"
# or without :ttl argument
Innate::Cache.user.store(:Pistos, "unknown")
Usage for retrieving:
# we stored this one for 10 seconds
Innate::Cache.user.fetch(:manveru, 'not here anymore')
# => "Michael Fellinger"
sleep 11
Innate::Cache.user.fetch(:manveru, 'not here anymore')
# => "not here anymore"
Innate::Cache.user[:Pistos]
# => "unknown"
Innate::Cache.user.fetch(:Pistos)
# => "unknown"
For more details and to find out how to implement your own cache please read the documentation of Innate::Cache::API
NOTE:
* Some caches might expose their contents for everyone else on the same
system, or even on connected systems. The rule as usual is, not to
cache sensitive information.
Defined Under Namespace
Modules: API, FileBased Classes: DRb, Marshal, Memory, YAML
Instance Attribute Summary collapse
-
#instance ⇒ Object
readonly
Returns the value of attribute instance.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
- .add(*names) ⇒ Object
-
.register(cache) ⇒ Object
Add accessors for cache.
-
.setup ⇒ Array
Add all caches from the options.
Instance Method Summary collapse
- #clear ⇒ Object
- #delete(*keys) ⇒ Object
- #fetch(key, default = nil) ⇒ Object (also: #[])
-
#initialize(name, klass = nil) ⇒ Cache
constructor
A new instance of Cache.
- #store(key, value, options = {}) ⇒ Object (also: #[]=)
Methods included from Optioned
Constructor Details
#initialize(name, klass = nil) ⇒ Cache
Returns a new instance of Cache.
76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/innate/cache.rb', line 76 def initialize(name, klass = nil) @name = name.to_s.dup.freeze klass ||= [@name.to_sym] @instance = klass.new @instance.cache_setup( ENV['HOSTNAME'], ENV['USER'], 'pristine', @name ) end |
Instance Attribute Details
#instance ⇒ Object (readonly)
Returns the value of attribute instance.
74 75 76 |
# File 'lib/innate/cache.rb', line 74 def instance @instance end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
74 75 76 |
# File 'lib/innate/cache.rb', line 74 def name @name end |
Class Method Details
.add(*names) ⇒ Object
111 112 113 |
# File 'lib/innate/cache.rb', line 111 def self.add(*names) names.each{|name| register(new(name)) } end |
.register(cache) ⇒ Object
Add accessors for cache
103 104 105 106 107 108 109 |
# File 'lib/innate/cache.rb', line 103 def self.register(cache) key = cache.name.to_s return if respond_to?(key) && respond_to?("#{key}=") (class << self; self; end).send(:attr_accessor, key) send("#{key}=", cache) end |
.setup ⇒ Array
Add all caches from the options.
96 97 98 |
# File 'lib/innate/cache.rb', line 96 def self.setup .names.each{|name| add(name) } end |
Instance Method Details
#clear ⇒ Object
115 116 117 |
# File 'lib/innate/cache.rb', line 115 def clear instance.cache_clear end |
#delete(*keys) ⇒ Object
119 120 121 |
# File 'lib/innate/cache.rb', line 119 def delete(*keys) instance.cache_delete(*keys) end |
#fetch(key, default = nil) ⇒ Object Also known as: []
123 124 125 |
# File 'lib/innate/cache.rb', line 123 def fetch(key, default = nil) instance.cache_fetch(key, default) end |
#store(key, value, options = {}) ⇒ Object Also known as: []=
128 129 130 |
# File 'lib/innate/cache.rb', line 128 def store(key, value, = {}) instance.cache_store(key, value, ) end |