Parent

Included Modules

Innate::Cache

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.options 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.

Attributes

instance[R]
name[R]

Public Class Methods

add(*names) click to toggle source
# File lib/innate/cache.rb, line 112
def self.add(*names)
  names.each{|name| register(new(name)) }
end
new(name, klass = nil) click to toggle source
# File lib/innate/cache.rb, line 76
def initialize(name, klass = nil)
  @name = name.to_s.dup.freeze

  klass ||= options[@name.to_sym]
  @instance = klass.new

  @instance.cache_setup(
    ENV['HOSTNAME'],
    ENV['USER'],
    'pristine',
    @name
  )
end
register(cache) click to toggle source

Add accessors for cache

@param [Cache] cache

# File lib/innate/cache.rb, line 103
def self.register(cache)
  key = cache.name
  source = "def self.%s() @%s; end
            def self.%s=(o) @%s = o; end" % [key, key, key, key]
  self.class_eval(source, __FILE__, __LINE__)

  self.send("#{key}=", cache)
end
setup() click to toggle source

Add all caches from the options.

@see Innate::setup_dependencies @api stable @return [Array] names of caches initialized @author manveru

# File lib/innate/cache.rb, line 96
def self.setup
  options.names.each{|name| add(name) }
end

Public Instance Methods

[](key, default = nil) click to toggle source
Alias for: fetch
[]=(key, value, options = {}) click to toggle source
Alias for: store
clear() click to toggle source
# File lib/innate/cache.rb, line 116
def clear
  instance.cache_clear
end
delete(*keys) click to toggle source
# File lib/innate/cache.rb, line 120
def delete(*keys)
  instance.cache_delete(*keys)
end
fetch(key, default = nil) click to toggle source
# File lib/innate/cache.rb, line 124
def fetch(key, default = nil)
  instance.cache_fetch(key, default)
end
Also aliased as: []
store(key, value, options = {}) click to toggle source
# File lib/innate/cache.rb, line 129
def store(key, value, options = {})
  instance.cache_store(key, value, options)
end
Also aliased as: []=

[Validate]

Generated with the Darkfish Rdoc Generator 2.