Module: Padrino::Cache

Defined in:
padrino-cache/lib/padrino-cache.rb,
padrino-cache/lib/padrino-cache/helpers/page.rb,
padrino-cache/lib/padrino-cache/helpers/fragment.rb,
padrino-cache/lib/padrino-cache/helpers/cache_store.rb,
padrino-cache/lib/padrino-cache/helpers/cache_object.rb

Overview

This component enables caching of an application's response contents on both page- and fragment-levels. Output cached in this manner is persisted, until it expires or is actively expired, in a configurable store of your choosing. Several common caching stores are supported out of the box.

Defined Under Namespace

Modules: Helpers

Class Method Summary collapse

Class Method Details

.new(name, options = {}) ⇒ Object



117
118
119
120
121
# File 'padrino-cache/lib/padrino-cache.rb', line 117

def self.new(name, options = {})
  # Activate expiration by default
  options[:expires] = true unless options.include?(:expires)
  Moneta.new(name, options)
end

.padrino_route_added(route, verb, path, args, options, block) ⇒ Object



112
113
114
# File 'padrino-cache/lib/padrino-cache.rb', line 112

def padrino_route_added(route, verb, path, args, options, block)
  Padrino::Cache::Helpers::Page.padrino_route_added(route, verb, path, args, options, block)
end

.registered(app) ⇒ Object

Register these helpers:

Padrino::Cache::Helpers::ObjectCache
Padrino::Cache::Helpers::CacheStore
Padrino::Cache::Helpers::Fragment
Padrino::Cache::Helpers::Page

for Padrino::Application.

By default we use FileStore as showed below:

set :cache, Padrino::Cache.new(:File, :dir => Padrino.root('tmp', app_name.to_s, 'cache'))

However, you can also change the file store easily in your app.rb:

set :cache, Padrino::Cache.new(:LRUHash) # Keeps cached values in memory
set :cache, Padrino::Cache.new(:Memcached) # Uses default server at localhost
set :cache, Padrino::Cache.new(:Memcached, '127.0.0.1:11211', :exception_retry_limit => 1)
set :cache, Padrino::Cache.new(:Memcached, :backend => memcached_or_dalli_instance)
set :cache, Padrino::Cache.new(:Redis) # Uses default server at localhost
set :cache, Padrino::Cache.new(:Redis, :host => '127.0.0.1', :port => 6379, :db => 0)
set :cache, Padrino::Cache.new(:Redis, :backend => redis_instance)
set :cache, Padrino::Cache.new(:Mongo) # Uses default server at localhost
set :cache, Padrino::Cache.new(:Mongo, :backend => mongo_client_instance)
set :cache, Padrino::Cache.new(:File, :dir => Padrino.root('tmp', app_name.to_s, 'cache')) # default choice

You can manage your cache from anywhere in your app:

MyApp.cache['val'] = 'test'
MyApp.cache['val'] # => 'test'
MyApp.cache.delete('val')
MyApp.cache.clear


95
96
97
98
99
100
101
102
103
104
105
106
# File 'padrino-cache/lib/padrino-cache.rb', line 95

def registered(app)
  app.helpers Padrino::Cache::Helpers::ObjectCache
  app.helpers Padrino::Cache::Helpers::CacheStore
  app.helpers Padrino::Cache::Helpers::Fragment
  app.helpers Padrino::Cache::Helpers::Page
  unless app.respond_to?(:cache)
    cache_dir = Padrino.root('tmp', defined?(app.app_name) ? app.app_name.to_s : '', 'cache')
    app.set :cache, Padrino::Cache.new(:File, :dir => cache_dir)
  end
  app.disable :caching unless app.respond_to?(:caching)
  included(app)
end