merb-cache 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -89,7 +89,7 @@ Implemented cache stores:
89
89
  #:store => "memcache",
90
90
  #:host => "127.0.0.1:11211",
91
91
  #:namespace => "merb_cache",
92
- #:no_tracking => "false",
92
+ #:no_tracking => false,
93
93
 
94
94
  #:store => "memory",
95
95
  # store could be: file, memcache, memory, database, dummy, ...
data/Rakefile CHANGED
@@ -1,80 +1,58 @@
1
1
  require 'rubygems'
2
- require "rake/rdoctask"
3
2
  require 'rake/gempackagetask'
4
- require "spec/rake/spectask"
3
+ require "extlib"
4
+ require 'merb-core/tasks/merb_rake_helper'
5
5
 
6
- PLUGIN = "merb-cache"
7
- NAME = "merb-cache"
8
- MERB_CACHE_VERSION = Merb::MORE_VERSION rescue "0.9.3"
9
- VERSION = "0.9.3"
10
- AUTHOR = "Alex Boussinet"
11
- EMAIL = "alex.boussinet@gmail.com"
12
- HOMEPAGE = "http://www.merbivore.com"
13
- SUMMARY = "Merb plugin that provides caching (page, action, fragment, object)"
6
+ ##############################################################################
7
+ # Package && release
8
+ ##############################################################################
9
+ RUBY_FORGE_PROJECT = "merb"
10
+ PROJECT_URL = "http://merbivore.com"
11
+ PROJECT_SUMMARY = "Merb plugin that provides caching (page, action, fragment, object)"
12
+ PROJECT_DESCRIPTION = PROJECT_SUMMARY
13
+
14
+ GEM_AUTHOR = "Alex Boussinet"
15
+ GEM_EMAIL = "alex.boussinet@gmail.com"
16
+
17
+ GEM_NAME = "merb-cache"
18
+ PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
19
+ GEM_VERSION = (Merb::MORE_VERSION rescue "0.9.4") + PKG_BUILD
20
+
21
+ RELEASE_NAME = "REL #{GEM_VERSION}"
22
+
23
+ require "extlib/tasks/release"
14
24
 
15
25
  spec = Gem::Specification.new do |s|
16
- s.name = NAME
17
- s.version = MERB_CACHE_VERSION
26
+ s.rubyforge_project = RUBY_FORGE_PROJECT
27
+ s.name = GEM_NAME
28
+ s.version = GEM_VERSION
18
29
  s.platform = Gem::Platform::RUBY
19
30
  s.has_rdoc = true
20
31
  s.extra_rdoc_files = ["README", "LICENSE", 'TODO']
21
- s.summary = SUMMARY
22
- s.description = s.summary
23
- s.author = AUTHOR
24
- s.email = EMAIL
25
- s.homepage = HOMEPAGE
26
- s.add_dependency('merb-core', '>= 0.9.3')
32
+ s.summary = PROJECT_SUMMARY
33
+ s.description = PROJECT_DESCRIPTION
34
+ s.author = GEM_AUTHOR
35
+ s.email = GEM_EMAIL
36
+ s.homepage = PROJECT_URL
37
+ s.add_dependency('merb-core', '>= 0.9.4')
27
38
  s.require_path = 'lib'
28
- s.autorequire = PLUGIN
29
39
  s.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{lib,spec}/**/*")
30
-
31
- # rdoc
32
- s.has_rdoc = true
33
- s.extra_rdoc_files = %w( README LICENSE TODO )
34
- end
35
-
36
- namespace :specs do
37
- ["file", "memory", "memcache", "sequel", "datamapper", "activerecord"].each do |store|
38
- desc "Run spec with the \"#{store}\" cache store"
39
- task "#{store}" do
40
- cwd = Dir.getwd
41
- Dir.chdir(File.dirname(__FILE__) + "/spec")
42
- ENV["STORE"] = store
43
- system("spec --format specdoc --colour merb-cache_spec.rb")
44
- Dir.chdir(cwd)
45
- end
46
- end
47
- end
48
-
49
- namespace :doc do
50
- Rake::RDocTask.new do |rdoc|
51
- files = ["README", "LICENSE", "lib/**/*.rb"]
52
- rdoc.rdoc_files.add(files)
53
- rdoc.main = "README"
54
- rdoc.title = "merb-cache docs"
55
- if File.file?("../../merb-core/tools/allison-2.0.2/lib/allison.rb")
56
- rdoc.template = "../../merb-core/tools/allison-2.0.2/lib/allison.rb"
57
- end
58
- rdoc.rdoc_dir = "doc/rdoc"
59
- rdoc.options << "--line-numbers" << "--inline-source"
60
- end
61
40
  end
62
41
 
63
42
  Rake::GemPackageTask.new(spec) do |pkg|
64
43
  pkg.gem_spec = spec
65
44
  end
66
45
 
67
- install_home = ENV['GEM_HOME'] ? "-i #{ENV['GEM_HOME']}" : ""
68
-
46
+ desc "Install the gem"
69
47
  task :install => [:package] do
70
- sh %{sudo gem install #{install_home} pkg/#{NAME}-#{MERB_CACHE_VERSION} --no-update-sources}
48
+ sh %{#{sudo} gem install #{install_home} pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources}
71
49
  end
72
50
 
73
51
  namespace :jruby do
74
52
 
75
53
  desc "Run :package and install the resulting .gem with jruby"
76
54
  task :install => :package do
77
- sh %{#{SUDO} jruby -S gem install #{install_home} pkg/#{NAME}-#{Merb::VERSION}.gem --no-rdoc --no-ri}
55
+ sh %{#{sudo} jruby -S gem install #{install_home} pkg/#{GEM_NAME}-#{GEM_VERSION}.gem --no-rdoc --no-ri}
78
56
  end
79
-
57
+
80
58
  end
@@ -4,35 +4,47 @@ class Merb::Cache
4
4
  end
5
5
 
6
6
  module Merb::Cache::ControllerClassMethods
7
- # Mixed in Merb::Controller. Provides methods related to action caching
7
+ # Mixed in Merb::Controller. Provides methods related to action caching.
8
8
 
9
- # Register the action for action caching
9
+ # Registers an action for action caching via before and after filters.
10
10
  #
11
11
  # ==== Parameters
12
- # action<Symbol>:: The name of the action to register
13
- # from_now<~minutes>::
14
- # The number of minutes (from now) the cache should persist
12
+ # action<Symbol>:: The name of the action to register.
13
+ # from_now<~minutes>:: The number of minutes (from now) the cache should persist.
14
+ # opts<Hash>::
15
+ # Filter options (see <tt>Filter Options</tt> in <tt>Merb::AbstractController</tt>). The filters created apply :only
16
+ # to specified <tt>action</tt>.
15
17
  #
16
18
  # ==== Examples
17
19
  # cache_action :mostly_static
18
20
  # cache_action :barely_dynamic, 10
19
- def cache_action(action, from_now = nil)
20
- cache_actions([action, from_now])
21
+ # cache_action :list, :if => Proc.new { |controller| !controller.params[:id].empty? }
22
+ # cache_action :show, :unless => proc { |controller| !controller.params[:id].empty? }
23
+ def cache_action(action, from_now = nil, opts = {})
24
+ cache_actions([action, from_now, opts])
21
25
  end
22
26
 
23
- # Register actions for action caching (before and after filters)
27
+ # Register multiple actions for action caching via before and after filters.
24
28
  #
25
29
  # ==== Parameter
26
- # actions<Symbol,Array[Symbol,~minutes]>:: See #cache_action
30
+ # actions<Symbol,Array[Symbol,~minutes],Hash>:: See #cache_action.
27
31
  #
28
32
  # ==== Example
29
- # cache_actions :mostly_static, [:barely_dynamic, 10]
33
+ # cache_actions(
34
+ # :mostly_static,
35
+ # [:barely_dynamic, 10],
36
+ # [:conditional, { :if => proc { |controller| controller.params[:id].empty? } }]
37
+ # )
30
38
  def cache_actions(*actions)
31
- if actions.any? && !Merb::Cache.cached_actions.key?(controller_name)
32
- before(:cache_action_before)
33
- after(:cache_action_after)
34
- end
35
- actions.each do |action, from_now|
39
+ actions.each do |action, from_now, opts|
40
+ from_now, opts = nil, from_now if Hash === from_now
41
+ opts ||= {}
42
+
43
+ before("cache_#{action}_before", opts.merge(:only => action))
44
+ after("cache_#{action}_after", opts.merge(:only => action))
45
+ alias_method "cache_#{action}_before", :cache_action_before
46
+ alias_method "cache_#{action}_after", :cache_action_after
47
+
36
48
  _actions = Merb::Cache.cached_actions[controller_name] ||= {}
37
49
  _actions[action] = from_now
38
50
  end
@@ -33,7 +33,7 @@ module Merb::Cache::ControllerClassMethods
33
33
  before(:cache_page_before)
34
34
  after(:cache_page_after)
35
35
  end
36
- pages.each do |action, from_now|
36
+ pages.each do |action, from_now|
37
37
  _pages = Merb::Cache.cached_pages[controller_name] ||= {}
38
38
  _pages[action] = [from_now, 0]
39
39
  end
@@ -68,9 +68,17 @@ module Merb::Cache::ControllerInstanceMethods
68
68
  # ==== Parameter
69
69
  # options<String,Hash>:: The options that will be passed to #expire_key_for
70
70
  #
71
- # ==== Examples
71
+ # ==== Examples (See Merb::Cache#expire_key_for for more options)
72
+ # # will expire path/to/page/cache/news/show/1.html
73
+ # expire_page(:key => url(:news,News.find(1)))
74
+ #
75
+ # # will expire path/to/page/cache/news/show.html
72
76
  # expire_page(:action => 'show', :controller => 'news')
77
+ #
78
+ # # will expire path/to/page/cache/news/show*
73
79
  # expire_page(:action => 'show', :match => true)
80
+ #
81
+ # # will expire path/to/page/cache/news/show.js
74
82
  # expire_page(:action => 'show', :extension => 'js')
75
83
  def expire_page(options)
76
84
  config_dir = Merb::Controller._cache.config[:cache_html_directory]
@@ -121,7 +129,8 @@ module Merb::Cache::ControllerInstanceMethods
121
129
  return unless pages && pages.key?(action)
122
130
  path = request.path.chomp("/")
123
131
  path = "index" if path.empty?
124
- ext = "." + (params[:format].empty? ? DEFAULT_PAGE_EXTENSION : params[:format])
132
+ no_format = params[:format].nil? || params[:format].empty?
133
+ ext = "." + (no_format ? DEFAULT_PAGE_EXTENSION : params[:format])
125
134
  ext = nil if File.extname(path) == ext
126
135
  cache_file = Merb::Controller._cache.config[:cache_html_directory] / "#{path}#{ext}"
127
136
  if data
@@ -136,7 +145,7 @@ module Merb::Cache::ControllerInstanceMethods
136
145
  if File.file?(cache_file)
137
146
  _data = cache_read_page(cache_file)
138
147
  _expire_in, _expire_at = pages[action]
139
- if _expire_in.nil? || Time.now < _expire_at
148
+ if _expire_in.nil? || Time.now.to_i < _expire_at.to_i
140
149
  Merb.logger.info("cache: hit (#{path})")
141
150
  throw(:halt, _data)
142
151
  end
@@ -2,11 +2,12 @@ module Merb::Cache::DatabaseStore::DataMapper
2
2
  # Module that provides DataMapper support for the database backend
3
3
 
4
4
  # The cache model
5
- class CacheModel < DataMapper::Base
6
- set_table_name Merb::Controller._cache.config[:table_name]
7
- property :ckey, :string, :length => 255, :lazy => false, :key => true
8
- property :data, :text, :lazy => false
9
- property :expire, :datetime, :default => nil
5
+ class CacheModel
6
+ include DataMapper::Resource
7
+ storage_names[:default] = Merb::Controller._cache.config[:table_name]
8
+ property :ckey, String, :length => 255, :lazy => false, :key => true
9
+ property :data, Text, :lazy => false
10
+ property :expire, DateTime, :default => nil
10
11
 
11
12
  # Fetch data from the database using the specified key
12
13
  # The entry is deleted if it has expired
@@ -18,9 +19,9 @@ module Merb::Cache::DatabaseStore::DataMapper
18
19
  # data<String, NilClass>::
19
20
  # nil is returned whether the entry expired or was not found
20
21
  def self.cache_get(key)
21
- if entry = self.first(key)
22
+ if entry = self.get(key)
22
23
  return entry.data if entry.expire.nil? || DateTime.now < entry.expire
23
- entry.destroy!
24
+ entry.destroy
24
25
  end
25
26
  nil
26
27
  end
@@ -38,9 +39,9 @@ module Merb::Cache::DatabaseStore::DataMapper
38
39
  # - when set to false, force creation of the cache entry
39
40
  def self.cache_set(key, data, expire = nil, get = true)
40
41
  attributes = {:ckey => key, :data => data,
41
- :expire => expire.nil? ? nil : expire.to_s_db }
42
+ :expire => expire }
42
43
  if get
43
- entry = self.first(key)
44
+ entry = self.get(key)
44
45
  entry.nil? ? self.create(attributes) : entry.update_attributes(attributes)
45
46
  else
46
47
  self.create(attributes)
@@ -53,8 +54,8 @@ module Merb::Cache::DatabaseStore::DataMapper
53
54
  # ==== Parameter
54
55
  # key<Sting>:: The key identifying the cache entry
55
56
  def self.expire(key)
56
- entry = self.first(key)
57
- entry.destroy! unless entry.nil?
57
+ entry = self.get(key)
58
+ entry.destroy unless entry.nil?
58
59
  end
59
60
 
60
61
  # Expire the cache entries matching the given key
@@ -62,18 +63,17 @@ module Merb::Cache::DatabaseStore::DataMapper
62
63
  # ==== Parameter
63
64
  # key<Sting>:: The key matching the cache entries
64
65
  def self.expire_match(key)
65
- #FIXME
66
- database.execute("DELETE FROM #{self.table.name} WHERE ckey LIKE '#{key}%'")
66
+ self.all(:ckey.like => "#{key}%").destroy!
67
67
  end
68
68
 
69
69
  # Expire all the cache entries
70
70
  def self.expire_all
71
- self.truncate!
71
+ self.all.destroy!
72
72
  end
73
73
 
74
74
  # Perform auto-migration in case the table is unknown in the database
75
75
  def self.check_table
76
- self.auto_migrate! unless self.table.exists?
76
+ self.auto_upgrade!
77
77
  end
78
78
  end
79
79
  end
@@ -6,7 +6,7 @@ class Merb::Cache::DatabaseStore
6
6
  prepare
7
7
  end
8
8
 
9
- class OrmNotFound < Exception #:nodoc:
9
+ class OrmNotFound < Exception #
10
10
  def initialize
11
11
  super("No valid ORM found (did you specify use_orm in init.rb?)")
12
12
  end
@@ -1,3 +1,4 @@
1
+ require 'fileutils'
1
2
  class Merb::Cache::FileStore
2
3
  # Provides the file cache store for merb-cache
3
4
 
@@ -8,7 +9,7 @@ class Merb::Cache::FileStore
8
9
  prepare
9
10
  end
10
11
 
11
- class NotAccessible < Exception #:nodoc:
12
+ class NotAccessible < Exception #
12
13
  def initialize(message)
13
14
  super("Cache directories are not readable/writeable (#{message})")
14
15
  end
@@ -17,6 +18,7 @@ class Merb::Cache::FileStore
17
18
  # This method is there to ensure minimal requirements are met
18
19
  # (directories are accessible, table exists, connected to server, ...)
19
20
  def prepare
21
+ FileUtils.mkdir_p @config[:cache_directory]
20
22
  unless File.readable?(@config[:cache_directory]) &&
21
23
  File.writable?(@config[:cache_directory])
22
24
  raise NotAccessible, @config[:cache_directory]
@@ -6,13 +6,13 @@ class Merb::Cache::MemcacheStore
6
6
  prepare
7
7
  end
8
8
 
9
- class NotReady < Exception #:nodoc:
9
+ class NotReady < Exception
10
10
  def initialize
11
11
  super("Memcache server is not ready")
12
12
  end
13
13
  end
14
14
 
15
- class NotDefined < Exception #:nodoc:
15
+ class NotDefined < Exception
16
16
  def initialize
17
17
  super("Memcache is not defined (require it in init.rb)")
18
18
  end
@@ -24,7 +24,7 @@ class Merb::Cache::MemcacheStore
24
24
  namespace = @config[:namespace] || 'merb-cache'
25
25
  host = @config[:host] || '127.0.0.1:11211'
26
26
  @memcache = MemCache.new(host, {:namespace => namespace})
27
- @tracking_key = "_#{namespace}_keys" unless @config[:no_tracking]
27
+ @tracking_key = "_#{namespace}_keys" unless @config[:no_tracking] == true
28
28
  raise NotReady unless @memcache.active?
29
29
  true
30
30
  rescue NameError
@@ -39,7 +39,7 @@ class Merb::Cache::MemcacheStore
39
39
  # ==== Returns
40
40
  # true if the cache entry exists, false otherwise
41
41
  def cached?(key)
42
- not @memcache.get(key).nil?
42
+ not cache_get(key).nil?
43
43
  end
44
44
 
45
45
  # Capture or restore the data in cache.
@@ -62,11 +62,10 @@ class Merb::Cache::MemcacheStore
62
62
  # It uses the capture_#{engine} and concat_#{engine} methods to do so.
63
63
  # The captured data are then marshalled and stored.
64
64
  def cache(_controller, key, from_now = nil, &block)
65
- _data = @memcache.get(key)
65
+ _data = cache_get(key)
66
66
  if _data.nil?
67
- _expire = from_now ? from_now.minutes.from_now.to_i : 0
68
67
  _data = _controller.send(:capture, &block)
69
- @memcache.set(key, _data, _expire)
68
+ cache_set(key, _data, from_now)
70
69
  end
71
70
  _controller.send(:concat, _data, block.binding)
72
71
  true
@@ -83,7 +82,7 @@ class Merb::Cache::MemcacheStore
83
82
  _expire = from_now ? from_now.minutes.from_now.to_i : 0
84
83
  @memcache.set(key, data, _expire)
85
84
  cache_start_tracking(key)
86
- Merb.logger.info("cache: set (#{key})")
85
+ Merb.logger.info!("cache: set (#{key})")
87
86
  true
88
87
  end
89
88
 
@@ -98,7 +97,11 @@ class Merb::Cache::MemcacheStore
98
97
  # nil is returned whether the entry expired or was not found
99
98
  def cache_get(key)
100
99
  data = @memcache.get(key)
101
- Merb.logger.info("cache: #{data.nil? ? "miss" : "hit"} (#{key})")
100
+ if data.nil?
101
+ Merb.logger.info!("cache: miss (#{key})")
102
+ else
103
+ Merb.logger.debug!("cache: hit (#{key})")
104
+ end
102
105
  data
103
106
  end
104
107
 
@@ -109,7 +112,7 @@ class Merb::Cache::MemcacheStore
109
112
  def expire(key)
110
113
  @memcache.delete(key)
111
114
  cache_stop_tracking(key)
112
- Merb.logger.info("cache: expired (#{key})")
115
+ Merb.logger.info!("cache: expired (#{key})")
113
116
  true
114
117
  end
115
118
 
@@ -122,6 +125,7 @@ class Merb::Cache::MemcacheStore
122
125
  # In memcache this requires to keep track of all keys (on by default).
123
126
  # If you don't need this, set :no_tracking => true in the config.
124
127
  def expire_match(key)
128
+ Merb.logger.debug!("cache: attempting to expire #{key}")
125
129
  if @tracking_key
126
130
  for _key in get_tracked_keys
127
131
  expire(_key) if /#{key}/ =~ _key
@@ -5,7 +5,7 @@ require "merb-cache/cache-fragment"
5
5
  class Merb::Cache
6
6
  attr_reader :config, :store
7
7
 
8
- class StoreNotFound < Exception #:nodoc:
8
+ class StoreNotFound < Exception
9
9
  def initialize(cache_store)
10
10
  super("cache_store (#{cache_store}) not found (not implemented?)")
11
11
  end
@@ -39,7 +39,7 @@ class Merb::Cache
39
39
  # If the cache_store mentionned in the config is unknown
40
40
  def start
41
41
  @config = DEFAULT_CONFIG.merge(Merb::Plugins.config[:merb_cache] || {})
42
- if @config[:disable] == true || Merb.environment == @config[:disable]
42
+ if @config[:disable] == true || Merb.environment.to_s == @config[:disable].to_s
43
43
  config[:disable_page_caching] = true
44
44
  config[:store] = "dummy"
45
45
  end
@@ -146,13 +146,13 @@ class Merb::Cache
146
146
  end
147
147
  end
148
148
 
149
- module Merb #:nodoc:
150
- class Controller #:nodoc:
149
+ module Merb
150
+ class Controller
151
151
  cattr_reader :_cache
152
152
  @@_cache = Merb::Cache.new
153
153
  # extends Merb::Controller with new instance methods
154
154
  include Merb::Cache::ControllerInstanceMethods
155
- class << self #:nodoc:
155
+ class << self
156
156
  # extends Merb::Controller with new class methods
157
157
  include Merb::Cache::ControllerClassMethods
158
158
  end
data/lib/merb-cache.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  if defined?(Merb::Plugins)
2
2
  Merb::Plugins.add_rakefiles "merb-cache/merbtasks"
3
3
  unless 1.respond_to? :minutes
4
- class Numeric #:nodoc:
4
+ class Numeric
5
5
  def minutes; self * 60; end
6
6
  def from_now(now = Time.now); now + self; end
7
7
  end
data/spec/controller.rb CHANGED
@@ -3,13 +3,19 @@ class CacheController < Merb::Controller
3
3
 
4
4
  cache_action :action3
5
5
  cache_action :action4, 0.05
6
- # or cache_actions :action3, [:action4, 0.05]
7
6
 
8
7
  cache_page :action5
9
8
  cache_page :action6, 0.05
10
9
  # or cache_pages :action5, [:action6, 0.05]
11
10
  cache_page :action7
12
11
 
12
+ cache_action :action8, 0.05, :if => proc {|controller| !controller.params[:id].empty?}
13
+ cache_action :action9, 0.05, :unless => proc {|controller| controller.params[:id].empty?}
14
+ cache_action :action10, :if => :non_empty_id?
15
+ cache_action :action11, :unless => :empty_id?
16
+
17
+ cache_actions :cache_actions_1, [:cache_actions_2, 0.05], [:cache_actions_3, { :if => :empty_id? }]
18
+
13
19
  def action1
14
20
  render
15
21
  end
@@ -52,7 +58,44 @@ class CacheController < Merb::Controller
52
58
  end
53
59
  end
54
60
 
61
+ def action8
62
+ "test action8"
63
+ end
64
+
65
+ def action9
66
+ "test action9"
67
+ end
68
+
69
+ def action10
70
+ "test action10"
71
+ end
72
+
73
+ def action11
74
+ "test action11"
75
+ end
76
+
77
+ def cache_actions_1
78
+ 'test cache_actions_1'
79
+ end
80
+
81
+ def cache_actions_2
82
+ 'test cache_actions_2'
83
+ end
84
+
85
+ def cache_actions_3
86
+ 'test cache_actions_3'
87
+ end
88
+
55
89
  def index
56
90
  "test index"
57
91
  end
92
+
93
+ private
94
+ def empty_id?
95
+ params[:id].empty?
96
+ end
97
+
98
+ def non_empty_id?
99
+ !empty_id?
100
+ end
58
101
  end
@@ -0,0 +1,433 @@
1
+ Mon, 21 Jul 2008 23:29:20 GMT ~ info ~ Logfile created
2
+ ~ Using memcache cache
3
+ ~ Not Using Sessions
4
+ ~ Using memory cache
5
+ ~ Not Using Sessions
6
+ ~ cache: expired all
7
+ ~ {:after_filters_time=>2.0e-05, :before_filters_time=>4.0e-05, :action_time=>0.000221}
8
+ ~ {:after_filters_time=>4.0e-05, :before_filters_time=>2.5e-05, :action_time=>0.000792}
9
+ ~ cache: hit (key1)
10
+ ~ {:after_filters_time=>2.2e-05, :before_filters_time=>2.5e-05, :action_time=>0.000636}
11
+ ~ cache: hit (key11)
12
+ ~ {:after_filters_time=>4.5e-05, :before_filters_time=>9.4e-05, :action_time=>0.001524}
13
+ ~ cache: hit (key11)
14
+ ~ cache: expired (key11)
15
+ ~ cache: miss (key11)
16
+ ~ {:after_filters_time=>3.8e-05, :before_filters_time=>8.8e-05, :action_time=>0.001444}
17
+ ~ cache: expired (key1)
18
+ ~ cache: miss (key1)
19
+ ~ {:after_filters_time=>3.1e-05, :before_filters_time=>4.0e-05, :action_time=>0.00092}
20
+ ~ cache: miss (unknown_key)
21
+ ~ cache: set (test1)
22
+ ~ cache: hit (test1)
23
+ ~ cache: set (test2)
24
+ ~ cache: hit (test2)
25
+ ~ cache: set (test3)
26
+ ~ cache: hit (test3)
27
+ ~ cache: expired matching (test)
28
+ ~ cache: miss (test1)
29
+ ~ cache: miss (test2)
30
+ ~ cache: miss (test3)
31
+ ~ cache: set (timed_key)
32
+ ~ cache: hit (timed_key)
33
+ ~ cache: miss (timed_key)
34
+ ~ cache: set (test1)
35
+ ~ cache: expired (test1)
36
+ ~ cache: miss (test1)
37
+ ~ cache: set (test2/id1)
38
+ ~ cache: expired (test2/id1)
39
+ ~ cache: miss (test2/id1)
40
+ ~ cache: set (test3)
41
+ ~ cache: expired (test3)
42
+ ~ cache: miss (test3)
43
+ ~ cache: set (test4/id1)
44
+ ~ cache: expired matching (test4/id1)
45
+ ~ cache: miss (test4/id1/id2)
46
+ ~ cache: expired all
47
+ ~ cache: miss (key1)
48
+ ~ cache: set (key1)
49
+ ~ cache: hit (key1)
50
+ ~ cache: miss (/cache_controller/action3)
51
+ ~ cache: set (/cache_controller/action3)
52
+ ~ {:after_filters_time=>7.9e-05, :before_filters_time=>0.000111, :action_time=>0.000218}
53
+ ~ cache: hit (/cache_controller/action3)
54
+ ~ cache: expired (/cache_controller/action3)
55
+ ~ cache: miss (/cache_controller/action3)
56
+ ~ cache: miss (/cache_controller/action3/abc/456/ghi)
57
+ ~ cache: set (/cache_controller/action3/abc/456/ghi)
58
+ ~ {:after_filters_time=>6.9e-05, :before_filters_time=>7.9e-05, :action_time=>0.000163}
59
+ ~ cache: hit (/cache_controller/action3/abc/456/ghi)
60
+ ~ cache: hit (/cache_controller/action3/abc/456/ghi)
61
+ ~ {:after_filters_time=>3.4e-05, :action_time=>0.00011}
62
+ ~ cache: expired (/cache_controller/action3/abc/456/ghi)
63
+ ~ cache: miss (/cache_controller/action3/abc/456/ghi)
64
+ ~ cache: miss (/cache_controller/action4)
65
+ ~ cache: set (/cache_controller/action4)
66
+ ~ {:after_filters_time=>7.6e-05, :before_filters_time=>7.9e-05, :action_time=>0.00017}
67
+ ~ cache: hit (/cache_controller/action4)
68
+ ~ cache: miss (/cache_controller/action4)
69
+ ~ cache: expired matching (/cache_controller/action4)
70
+ ~ cache: miss (/cache_controller/action4/path/to/nowhere)
71
+ ~ cache: set (/cache_controller/action4/path/to/nowhere)
72
+ ~ {:after_filters_time=>9.5e-05, :before_filters_time=>0.000108, :action_time=>0.000227}
73
+ ~ cache: miss (/cache_controller/action4/path/to/nowhere)
74
+ ~ cache: miss (/cache_controller/action4)
75
+ ~ cache: set (/cache_controller/action4)
76
+ ~ {:after_filters_time=>9.2e-05, :before_filters_time=>0.000112, :action_time=>0.000225}
77
+ ~ cache: expired (/cache_controller/action4)
78
+ ~ cache: miss (/cache_controller/action4)
79
+ ~ cache: set (/cache_controller/action4)
80
+ ~ {:after_filters_time=>8.1e-05, :before_filters_time=>8.8e-05, :action_time=>0.000184}
81
+ ~ cache: expired matching (/cache_control)
82
+ ~ cache: miss (/cache_controller/action4)
83
+ ~ cache: set (/cache_controller/action4)
84
+ ~ {:after_filters_time=>7.2e-05, :before_filters_time=>7.8e-05, :action_time=>0.000164}
85
+ ~ cache: expired (/cache_controller/action4)
86
+ ~ cache: miss (/cache_controller/action4/id1/id2)
87
+ ~ cache: set (/cache_controller/action4/id1/id2)
88
+ ~ {:after_filters_time=>7.3e-05, :before_filters_time=>7.8e-05, :action_time=>0.000164}
89
+ ~ cache: expired (/cache_controller/action4/id1/id2)
90
+ ~ cache: miss (/cache_controller/action4/id1/id2)
91
+ ~ cache: set (/cache_controller/action4/id1/id2)
92
+ ~ {:after_filters_time=>7.2e-05, :before_filters_time=>7.8e-05, :action_time=>0.000164}
93
+ ~ cache: expired matching (/cache_controller/action4)
94
+ ~ cache: miss (/cache_controller/action4)
95
+ ~ cache: set (/cache_controller/action4)
96
+ ~ {:after_filters_time=>7.3e-05, :before_filters_time=>7.7e-05, :action_time=>0.000164}
97
+ ~ cache: expired (/cache_controller/action4)
98
+ ~ cache: miss (/cache_controller/action4/id1/id2)
99
+ ~ cache: set (/cache_controller/action4/id1/id2)
100
+ ~ {:after_filters_time=>7.2e-05, :before_filters_time=>7.7e-05, :action_time=>0.000163}
101
+ ~ cache: expired matching (/cache_controller/action4/id1)
102
+ ~ cache: miss (/cache_controller/action4/id1/id2)
103
+ ~ cache: set (/cache_controller/action4/id1/id2)
104
+ ~ {:after_filters_time=>7.3e-05, :before_filters_time=>9.1e-05, :action_time=>0.000178}
105
+ ~ cache: expired matching (/cache_controller/action4)
106
+ ~ cache: miss (/cache_controller/action4/id1/id2)
107
+ ~ cache: set (/cache_controller/action4/id1/id2)
108
+ ~ {:after_filters_time=>7.1e-05, :before_filters_time=>7.7e-05, :action_time=>0.000164}
109
+ ~ cache: expired matching (/cache_controller/action4/id1)
110
+ ~ cache: miss (/cache_controller/action4/id1/id2)
111
+ ~ cache: set (/cache_controller/action4/id1/id2)
112
+ ~ {:after_filters_time=>7.3e-05, :before_filters_time=>9.1e-05, :action_time=>0.000178}
113
+ ~ cache: expired (/cache_controller/action4/id1/id2)
114
+ ~ cache: miss (/cache_controller/action4)
115
+ ~ cache: set (/cache_controller/action4)
116
+ ~ {:after_filters_time=>7.2e-05, :before_filters_time=>9.1e-05, :action_time=>0.000177}
117
+ ~ cache: expired (/cache_controller/action4)
118
+ ~ cache: miss (/cache_controller/action4/id1/id2)
119
+ ~ cache: set (/cache_controller/action4/id1/id2)
120
+ ~ {:after_filters_time=>6.5e-05, :before_filters_time=>8.3e-05, :action_time=>0.000161}
121
+ ~ cache: expired (/cache_controller/action4/id1/id2)
122
+ ~ cache: miss (/cache_controller/action4/id1/id2)
123
+ ~ cache: set (/cache_controller/action4/id1/id2)
124
+ ~ {:after_filters_time=>6.5e-05, :before_filters_time=>8.2e-05, :action_time=>0.00016}
125
+ ~ cache: expired matching (/cache_controller/action4/id1)
126
+ ~ cache: miss (/cache_controller/action4/id1/id2)
127
+ ~ cache: set (/cache_controller/action4/id1/id2)
128
+ ~ {:after_filters_time=>5.0e-05, :before_filters_time=>5.8e-05, :action_time=>0.000119}
129
+ ~ cache: expired matching (/cache_controller/action4/id1)
130
+ ~ {:after_filters_time=>2.6e-05, :before_filters_time=>0.000175, :action_time=>0.000213}
131
+ ~ cache: miss (/cache_controller/action8/cache)
132
+ ~ cache: set (/cache_controller/action8/cache)
133
+ ~ {:after_filters_time=>5.5e-05, :before_filters_time=>0.000142, :action_time=>0.000208}
134
+ ~ {:after_filters_time=>2.6e-05, :before_filters_time=>0.000104, :action_time=>0.000141}
135
+ ~ cache: miss (/cache_controller/action9/cache)
136
+ ~ cache: set (/cache_controller/action9/cache)
137
+ ~ {:after_filters_time=>5.6e-05, :before_filters_time=>0.000129, :action_time=>0.000194}
138
+ ~ {:after_filters_time=>2.4e-05, :before_filters_time=>0.000106, :action_time=>0.000139}
139
+ ~ cache: miss (/cache_controller/action10/cache)
140
+ ~ cache: set (/cache_controller/action10/cache)
141
+ ~ {:after_filters_time=>5.2e-05, :before_filters_time=>0.000126, :action_time=>0.000187}
142
+ ~ {:after_filters_time=>2.4e-05, :before_filters_time=>0.000103, :action_time=>0.000136}
143
+ ~ cache: miss (/cache_controller/action11/cache)
144
+ ~ cache: set (/cache_controller/action11/cache)
145
+ ~ {:after_filters_time=>5.1e-05, :before_filters_time=>0.000134, :action_time=>0.000195}
146
+ ~ cache: set (/cache_controller/action5)
147
+ ~ {:after_filters_time=>0.000414, :before_filters_time=>0.000163, :action_time=>0.000596}
148
+ ~ cache: set (/cache_controller/action5/this/is/a/test)
149
+ ~ {:after_filters_time=>0.001305, :before_filters_time=>0.000296, :action_time=>0.001627}
150
+ ~ cache: set (/cache_controller/action6)
151
+ ~ {:after_filters_time=>0.000582, :before_filters_time=>0.000236, :action_time=>0.000858}
152
+ ~ cache: hit (/cache_controller/action6)
153
+ ~ {:after_filters_time=>2.4e-05, :action_time=>0.000346}
154
+ ~ cache: set (/cache_controller/action6)
155
+ ~ {:after_filters_time=>0.000622, :before_filters_time=>0.0008, :action_time=>0.001475}
156
+ ~ cache: set (/cache_controller/action6/path/to/nowhere)
157
+ ~ {:after_filters_time=>0.001422, :before_filters_time=>0.000258, :action_time=>0.001737}
158
+ ~ cache: hit (/cache_controller/action6/path/to/nowhere)
159
+ ~ {:after_filters_time=>3.8e-05, :action_time=>0.000656}
160
+ ~ cache: set (/cache_controller/action6/path/to/nowhere)
161
+ ~ {:after_filters_time=>0.000387, :before_filters_time=>0.000445, :action_time=>0.000869}
162
+ ~ cache: set (/cache_controller/action6)
163
+ ~ {:after_filters_time=>0.000341, :before_filters_time=>0.000178, :action_time=>0.000543}
164
+ ~ cache: set (/cache_controller/action6)
165
+ ~ {:after_filters_time=>0.000574, :before_filters_time=>0.000164, :action_time=>0.000771}
166
+ ~ cache: set (/cache_controller/action6)
167
+ ~ {:after_filters_time=>0.000375, :before_filters_time=>0.000167, :action_time=>0.000575}
168
+ ~ cache: set (/cache_controller/action6/id1/id2)
169
+ ~ {:after_filters_time=>0.00086, :before_filters_time=>0.000183, :action_time=>0.001069}
170
+ ~ cache: set (/cache_controller/action6/id1/id2)
171
+ ~ {:after_filters_time=>0.000349, :before_filters_time=>0.00016, :action_time=>0.000536}
172
+ ~ cache: set (/cache_controller/action6)
173
+ ~ {:after_filters_time=>0.000367, :before_filters_time=>0.000149, :action_time=>0.000543}
174
+ ~ cache: set (/cache_controller/action6/id1/id2)
175
+ ~ {:after_filters_time=>0.000718, :before_filters_time=>0.000163, :action_time=>0.000908}
176
+ ~ cache: set (/cache_controller/action6/id1/id2)
177
+ ~ {:after_filters_time=>0.000332, :before_filters_time=>0.000141, :action_time=>0.000502}
178
+ ~ cache: set (/cache_controller/action6/id1/id2)
179
+ ~ {:after_filters_time=>0.000696, :before_filters_time=>0.000155, :action_time=>0.000877}
180
+ ~ cache: set (/cache_controller/action6/id1/id2)
181
+ ~ {:after_filters_time=>0.000397, :before_filters_time=>0.000154, :action_time=>0.000578}
182
+ ~ cache: set (/cache_controller/action6)
183
+ ~ {:after_filters_time=>0.000371, :before_filters_time=>0.00018, :action_time=>0.000577}
184
+ ~ cache: set (/cache_controller/action6/id1/id2)
185
+ ~ {:after_filters_time=>0.000358, :before_filters_time=>0.000172, :action_time=>0.000555}
186
+ ~ cache: set (/cache_controller/action6/id1/id2)
187
+ ~ {:after_filters_time=>0.000353, :before_filters_time=>0.000156, :action_time=>0.000544}
188
+ ~ cache: set (/cache_controller/action6/id1/id2)
189
+ ~ {:after_filters_time=>0.000337, :before_filters_time=>0.000151, :action_time=>0.000515}
190
+ ~ cache: set (/cache_controller/action7.css)
191
+ ~ {:after_filters_time=>0.000535, :before_filters_time=>0.000459, :action_time=>0.001035}
192
+ ~ cache: hit (/cache_controller/action7.css)
193
+ ~ {:after_filters_time=>2.7e-05, :action_time=>0.000552}
194
+ ~ cache: set (/cache_controller/action7.js)
195
+ ~ {:after_filters_time=>0.000539, :before_filters_time=>0.000381, :action_time=>0.000956}
196
+ ~ cache: hit (/cache_controller/action7.js)
197
+ ~ {:after_filters_time=>2.2e-05, :action_time=>0.0003}
198
+ ~ cache: set (/cache_controller/action7.xml)
199
+ ~ {:after_filters_time=>0.000405, :before_filters_time=>0.000169, :action_time=>0.000599}
200
+ ~ cache: hit (/cache_controller/action7.xml)
201
+ ~ {:after_filters_time=>2.1e-05, :action_time=>0.000263}
202
+ ~ cache: set (/cache_controller/action7.jpg)
203
+ ~ {:after_filters_time=>0.000331, :before_filters_time=>0.000173, :action_time=>0.000528}
204
+ ~ cache: hit (/cache_controller/action7.jpg)
205
+ ~ {:after_filters_time=>1.9e-05, :action_time=>0.000259}
206
+ ~ cache: set (/cache_controller/action7.html)
207
+ ~ {:after_filters_time=>0.000308, :before_filters_time=>0.00017, :action_time=>0.0005}
208
+ ~ cache: hit (/cache_controller/action7.html)
209
+ ~ {:after_filters_time=>2.2e-05, :action_time=>0.000288}
210
+ ~ Using memcache cache
211
+ ~ Not Using Sessions
212
+ ~ cache: expired all
213
+ ~ {:after_filters_time=>1.9e-05, :before_filters_time=>4.1e-05, :action_time=>0.000244}
214
+ ~ cache: miss (key1)
215
+ ~ cache: set (key1)
216
+ ~ {:after_filters_time=>2.8e-05, :before_filters_time=>2.4e-05, :action_time=>0.00422}
217
+ ~ cache: miss (key11)
218
+ ~ cache: set (key11)
219
+ ~ {:after_filters_time=>2.4e-05, :before_filters_time=>3.4e-05, :action_time=>0.001341}
220
+ ~ {:after_filters_time=>2.7e-05, :before_filters_time=>4.9e-05, :action_time=>0.001105}
221
+ ~ cache: expired (key11)
222
+ ~ cache: miss (key11)
223
+ ~ {:after_filters_time=>3.9e-05, :before_filters_time=>9.3e-05, :action_time=>0.001921}
224
+ ~ cache: expired (key1)
225
+ ~ cache: miss (key1)
226
+ ~ cache: miss (key1)
227
+ ~ cache: set (key1)
228
+ ~ {:after_filters_time=>3.1e-05, :before_filters_time=>4.2e-05, :action_time=>0.001765}
229
+ ~ cache: miss (unknown_key)
230
+ ~ cache: set (test1)
231
+ ~ cache: set (test2)
232
+ ~ cache: set (test3)
233
+ ~ cache: expired (test1)
234
+ ~ cache: expired (test2)
235
+ ~ cache: expired (test3)
236
+ ~ cache: miss (test1)
237
+ ~ cache: miss (test2)
238
+ ~ cache: miss (test3)
239
+ ~ cache: set (timed_key)
240
+ ~ cache: miss (timed_key)
241
+ ~ cache: set (test1)
242
+ ~ cache: expired (test1)
243
+ ~ cache: miss (test1)
244
+ ~ cache: set (test2/id1)
245
+ ~ cache: expired (test2/id1)
246
+ ~ cache: miss (test2/id1)
247
+ ~ cache: set (test3)
248
+ ~ cache: expired (test3)
249
+ ~ cache: miss (test3)
250
+ ~ cache: set (test4/id1)
251
+ ~ cache: expired (test4/id1)
252
+ ~ cache: miss (test4/id1/id2)
253
+ ~ cache: expired all
254
+ ~ cache: miss (key1)
255
+ ~ cache: set (key1)
256
+ ~ cache: miss (/cache_controller/action3)
257
+ ~ cache: set (/cache_controller/action3)
258
+ ~ {:after_filters_time=>0.000491, :before_filters_time=>0.000238, :action_time=>0.000753}
259
+ ~ cache: expired (/cache_controller/action3)
260
+ ~ cache: miss (/cache_controller/action3)
261
+ ~ cache: miss (/cache_controller/action3/abc/456/ghi)
262
+ ~ cache: set (/cache_controller/action3/abc/456/ghi)
263
+ ~ {:after_filters_time=>0.000458, :before_filters_time=>0.000186, :action_time=>0.000689}
264
+ ~ {:after_filters_time=>2.3e-05, :action_time=>0.000186}
265
+ ~ cache: expired (/cache_controller/action3/abc/456/ghi)
266
+ ~ cache: miss (/cache_controller/action3/abc/456/ghi)
267
+ ~ cache: miss (/cache_controller/action4)
268
+ ~ cache: set (/cache_controller/action4)
269
+ ~ {:after_filters_time=>0.000462, :before_filters_time=>0.000182, :action_time=>0.000656}
270
+ ~ cache: miss (/cache_controller/action4)
271
+ ~ cache: miss (/cache_controller/action4)
272
+ ~ cache: expired (/cache_controller/action4)
273
+ ~ cache: miss (/cache_controller/action4/path/to/nowhere)
274
+ ~ cache: miss (/cache_controller/action4/path/to/nowhere)
275
+ ~ cache: set (/cache_controller/action4/path/to/nowhere)
276
+ ~ {:after_filters_time=>0.000713, :before_filters_time=>0.000315, :action_time=>0.00105}
277
+ ~ cache: miss (/cache_controller/action4/path/to/nowhere)
278
+ ~ cache: miss (/cache_controller/action4/path/to/nowhere)
279
+ ~ cache: miss (/cache_controller/action4)
280
+ ~ cache: set (/cache_controller/action4)
281
+ ~ {:after_filters_time=>0.002476, :before_filters_time=>0.000364, :action_time=>0.002862}
282
+ ~ cache: expired (/cache_controller/action4)
283
+ ~ cache: miss (/cache_controller/action4)
284
+ ~ cache: miss (/cache_controller/action4)
285
+ ~ cache: set (/cache_controller/action4)
286
+ ~ {:after_filters_time=>0.000716, :before_filters_time=>0.000307, :action_time=>0.00104}
287
+ ~ cache: expired (/cache_controller/action4/path/to/nowhere)
288
+ ~ cache: expired (/cache_controller/action4)
289
+ ~ cache: miss (/cache_controller/action4)
290
+ ~ cache: miss (/cache_controller/action4)
291
+ ~ cache: set (/cache_controller/action4)
292
+ ~ {:after_filters_time=>0.000476, :before_filters_time=>0.000189, :action_time=>0.000675}
293
+ ~ cache: expired (/cache_controller/action4)
294
+ ~ cache: miss (/cache_controller/action4)
295
+ ~ cache: miss (/cache_controller/action4/id1/id2)
296
+ ~ cache: set (/cache_controller/action4/id1/id2)
297
+ ~ {:after_filters_time=>0.000473, :before_filters_time=>0.000189, :action_time=>0.000671}
298
+ ~ cache: expired (/cache_controller/action4/id1/id2)
299
+ ~ cache: miss (/cache_controller/action4/id1/id2)
300
+ ~ cache: miss (/cache_controller/action4/id1/id2)
301
+ ~ cache: set (/cache_controller/action4/id1/id2)
302
+ ~ {:after_filters_time=>0.000486, :before_filters_time=>0.000181, :action_time=>0.000678}
303
+ ~ cache: expired (/cache_controller/action4/id1/id2)
304
+ ~ cache: miss (/cache_controller/action4/id1/id2)
305
+ ~ cache: miss (/cache_controller/action4)
306
+ ~ cache: set (/cache_controller/action4)
307
+ ~ {:after_filters_time=>0.000484, :before_filters_time=>0.00019, :action_time=>0.000683}
308
+ ~ cache: expired (/cache_controller/action4)
309
+ ~ cache: miss (/cache_controller/action4)
310
+ ~ cache: miss (/cache_controller/action4/id1/id2)
311
+ ~ cache: set (/cache_controller/action4/id1/id2)
312
+ ~ {:after_filters_time=>0.000487, :before_filters_time=>0.000182, :action_time=>0.000679}
313
+ ~ cache: expired (/cache_controller/action4/id1/id2)
314
+ ~ cache: miss (/cache_controller/action4/id1/id2)
315
+ ~ cache: miss (/cache_controller/action4/id1/id2)
316
+ ~ cache: set (/cache_controller/action4/id1/id2)
317
+ ~ {:after_filters_time=>0.000471, :before_filters_time=>0.000187, :action_time=>0.000668}
318
+ ~ cache: expired (/cache_controller/action4/id1/id2)
319
+ ~ cache: miss (/cache_controller/action4/id1/id2)
320
+ ~ cache: miss (/cache_controller/action4/id1/id2)
321
+ ~ cache: set (/cache_controller/action4/id1/id2)
322
+ ~ {:after_filters_time=>0.000475, :before_filters_time=>0.000195, :action_time=>0.00068}
323
+ ~ cache: expired (/cache_controller/action4/id1/id2)
324
+ ~ cache: miss (/cache_controller/action4/id1/id2)
325
+ ~ cache: miss (/cache_controller/action4/id1/id2)
326
+ ~ cache: set (/cache_controller/action4/id1/id2)
327
+ ~ {:after_filters_time=>0.000489, :before_filters_time=>0.000174, :action_time=>0.000671}
328
+ ~ cache: expired (/cache_controller/action4/id1/id2)
329
+ ~ cache: miss (/cache_controller/action4/id1/id2)
330
+ ~ cache: miss (/cache_controller/action4)
331
+ ~ cache: set (/cache_controller/action4)
332
+ ~ {:after_filters_time=>0.000485, :before_filters_time=>0.000199, :action_time=>0.000694}
333
+ ~ cache: expired (/cache_controller/action4)
334
+ ~ cache: miss (/cache_controller/action4)
335
+ ~ cache: miss (/cache_controller/action4/id1/id2)
336
+ ~ cache: set (/cache_controller/action4/id1/id2)
337
+ ~ {:after_filters_time=>0.000474, :before_filters_time=>0.000189, :action_time=>0.000673}
338
+ ~ cache: expired (/cache_controller/action4/id1/id2)
339
+ ~ cache: miss (/cache_controller/action4/id1/id2)
340
+ ~ cache: miss (/cache_controller/action4/id1/id2)
341
+ ~ cache: set (/cache_controller/action4/id1/id2)
342
+ ~ {:after_filters_time=>0.000471, :before_filters_time=>0.000186, :action_time=>0.000667}
343
+ ~ cache: expired (/cache_controller/action4/id1/id2)
344
+ ~ cache: miss (/cache_controller/action4/id1/id2)
345
+ ~ cache: miss (/cache_controller/action4/id1/id2)
346
+ ~ cache: set (/cache_controller/action4/id1/id2)
347
+ ~ {:after_filters_time=>0.000486, :before_filters_time=>0.00019, :action_time=>0.000686}
348
+ ~ cache: expired (/cache_controller/action4/id1/id2)
349
+ ~ cache: miss (/cache_controller/action4/id1/id2)
350
+ ~ {:after_filters_time=>2.6e-05, :before_filters_time=>0.000162, :action_time=>0.000202}
351
+ ~ cache: miss (/cache_controller/action8)
352
+ ~ cache: miss (/cache_controller/action8/cache)
353
+ ~ cache: set (/cache_controller/action8/cache)
354
+ ~ {:after_filters_time=>0.000484, :before_filters_time=>0.000266, :action_time=>0.000759}
355
+ ~ {:after_filters_time=>2.6e-05, :before_filters_time=>0.000107, :action_time=>0.000143}
356
+ ~ cache: miss (/cache_controller/action9)
357
+ ~ cache: miss (/cache_controller/action9/cache)
358
+ ~ cache: set (/cache_controller/action9/cache)
359
+ ~ {:after_filters_time=>0.000502, :before_filters_time=>0.000276, :action_time=>0.000788}
360
+ ~ {:after_filters_time=>2.5e-05, :before_filters_time=>0.000147, :action_time=>0.000182}
361
+ ~ cache: miss (/cache_controller/action10)
362
+ ~ cache: miss (/cache_controller/action10/cache)
363
+ ~ cache: set (/cache_controller/action10/cache)
364
+ ~ {:after_filters_time=>0.003832, :before_filters_time=>0.000274, :action_time=>0.004122}
365
+ ~ {:after_filters_time=>3.2e-05, :before_filters_time=>0.000154, :action_time=>0.000203}
366
+ ~ cache: miss (/cache_controller/action11)
367
+ ~ cache: miss (/cache_controller/action11/cache)
368
+ ~ cache: set (/cache_controller/action11/cache)
369
+ ~ {:after_filters_time=>0.000503, :before_filters_time=>0.000397, :action_time=>0.000915}
370
+ ~ cache: set (/cache_controller/action5)
371
+ ~ {:after_filters_time=>0.000436, :before_filters_time=>0.000189, :action_time=>0.000647}
372
+ ~ cache: set (/cache_controller/action5/this/is/a/test)
373
+ ~ {:after_filters_time=>0.001277, :before_filters_time=>0.000256, :action_time=>0.001557}
374
+ ~ cache: set (/cache_controller/action6)
375
+ ~ {:after_filters_time=>0.000479, :before_filters_time=>0.000253, :action_time=>0.00077}
376
+ ~ cache: hit (/cache_controller/action6)
377
+ ~ {:after_filters_time=>3.8e-05, :action_time=>0.000645}
378
+ ~ cache: set (/cache_controller/action6)
379
+ ~ {:after_filters_time=>0.00062, :before_filters_time=>0.000919, :action_time=>0.001593}
380
+ ~ cache: set (/cache_controller/action6/path/to/nowhere)
381
+ ~ {:after_filters_time=>0.001441, :before_filters_time=>0.000285, :action_time=>0.001775}
382
+ ~ cache: hit (/cache_controller/action6/path/to/nowhere)
383
+ ~ {:after_filters_time=>3.8e-05, :action_time=>0.000643}
384
+ ~ cache: set (/cache_controller/action6/path/to/nowhere)
385
+ ~ {:after_filters_time=>0.000637, :before_filters_time=>0.000806, :action_time=>0.001497}
386
+ ~ cache: set (/cache_controller/action6)
387
+ ~ {:after_filters_time=>0.000548, :before_filters_time=>0.000235, :action_time=>0.000817}
388
+ ~ cache: set (/cache_controller/action6)
389
+ ~ {:after_filters_time=>0.00057, :before_filters_time=>0.000325, :action_time=>0.000951}
390
+ ~ cache: set (/cache_controller/action6)
391
+ ~ {:after_filters_time=>0.00043, :before_filters_time=>0.000217, :action_time=>0.000679}
392
+ ~ cache: set (/cache_controller/action6/id1/id2)
393
+ ~ {:after_filters_time=>0.001216, :before_filters_time=>0.000286, :action_time=>0.00153}
394
+ ~ cache: set (/cache_controller/action6/id1/id2)
395
+ ~ {:after_filters_time=>0.000472, :before_filters_time=>0.000228, :action_time=>0.000734}
396
+ ~ cache: set (/cache_controller/action6)
397
+ ~ {:after_filters_time=>0.000451, :before_filters_time=>0.000232, :action_time=>0.000713}
398
+ ~ cache: set (/cache_controller/action6/id1/id2)
399
+ ~ {:after_filters_time=>0.000982, :before_filters_time=>0.000246, :action_time=>0.001256}
400
+ ~ cache: set (/cache_controller/action6/id1/id2)
401
+ ~ {:after_filters_time=>0.000375, :before_filters_time=>0.000203, :action_time=>0.000604}
402
+ ~ cache: set (/cache_controller/action6/id1/id2)
403
+ ~ {:after_filters_time=>0.000868, :before_filters_time=>0.000203, :action_time=>0.001096}
404
+ ~ cache: set (/cache_controller/action6/id1/id2)
405
+ ~ {:after_filters_time=>0.000316, :before_filters_time=>0.000188, :action_time=>0.000527}
406
+ ~ cache: set (/cache_controller/action6)
407
+ ~ {:after_filters_time=>0.000301, :before_filters_time=>0.000264, :action_time=>0.000584}
408
+ ~ cache: set (/cache_controller/action6/id1/id2)
409
+ ~ {:after_filters_time=>0.000284, :before_filters_time=>0.000184, :action_time=>0.000487}
410
+ ~ cache: set (/cache_controller/action6/id1/id2)
411
+ ~ {:after_filters_time=>0.000294, :before_filters_time=>0.00013, :action_time=>0.000444}
412
+ ~ cache: set (/cache_controller/action6/id1/id2)
413
+ ~ {:after_filters_time=>0.000653, :before_filters_time=>0.000335, :action_time=>0.001034}
414
+ ~ cache: set (/cache_controller/action7.css)
415
+ ~ {:after_filters_time=>0.000679, :before_filters_time=>0.000226, :action_time=>0.000941}
416
+ ~ cache: hit (/cache_controller/action7.css)
417
+ ~ {:after_filters_time=>2.5e-05, :action_time=>0.000364}
418
+ ~ cache: set (/cache_controller/action7.js)
419
+ ~ {:after_filters_time=>0.000474, :before_filters_time=>0.000188, :action_time=>0.000696}
420
+ ~ cache: hit (/cache_controller/action7.js)
421
+ ~ {:after_filters_time=>2.0e-05, :action_time=>0.000274}
422
+ ~ cache: set (/cache_controller/action7.xml)
423
+ ~ {:after_filters_time=>0.000548, :before_filters_time=>0.000168, :action_time=>0.000902}
424
+ ~ cache: hit (/cache_controller/action7.xml)
425
+ ~ {:after_filters_time=>2.1e-05, :action_time=>0.000298}
426
+ ~ cache: set (/cache_controller/action7.jpg)
427
+ ~ {:after_filters_time=>0.000318, :before_filters_time=>0.000162, :action_time=>0.000504}
428
+ ~ cache: hit (/cache_controller/action7.jpg)
429
+ ~ {:after_filters_time=>1.9e-05, :action_time=>0.000241}
430
+ ~ cache: set (/cache_controller/action7.html)
431
+ ~ {:after_filters_time=>0.000294, :before_filters_time=>0.000153, :action_time=>0.000467}
432
+ ~ cache: hit (/cache_controller/action7.html)
433
+ ~ {:after_filters_time=>2.0e-05, :action_time=>0.000239}
@@ -103,4 +103,60 @@ describe "merb-cache-action" do
103
103
  CACHE.cached_action?(:key => "/cache_controller/action4/id1/id2").should be_false
104
104
  end
105
105
 
106
+ it "should allow :if conditions with procs" do
107
+ c = get("/cache_controller/action8")
108
+ CACHE.cached_action?(:key => "/cache_controller/action8").should be_false
109
+
110
+ c = get("/cache_controller/action8/cache")
111
+ CACHE.cached_action?(:key => "/cache_controller/action8/cache").should be_true
112
+ end
113
+
114
+ it "should allow :unless conditions with procs" do
115
+ c = get("/cache_controller/action9")
116
+ CACHE.cached_action?(:key => "/cache_controller/action9").should be_false
117
+
118
+ c = get("/cache_controller/action9/cache")
119
+ CACHE.cached_action?(:key => "/cache_controller/action9/cache").should be_true
120
+ end
121
+
122
+ it "should allow :if conditions with symbols" do
123
+ c = get("/cache_controller/action10")
124
+ CACHE.cached_action?(:key => "/cache_controller/action10").should be_false
125
+
126
+ c = get("/cache_controller/action10/cache")
127
+ CACHE.cached_action?(:key => "/cache_controller/action10/cache").should be_true
128
+ end
129
+
130
+ it "should allow :unless conditions with symbols" do
131
+ c = get("/cache_controller/action11")
132
+ CACHE.cached_action?(:key => "/cache_controller/action11").should be_false
133
+
134
+ c = get("/cache_controller/action11/cache")
135
+ CACHE.cached_action?(:key => "/cache_controller/action11/cache").should be_true
136
+ end
106
137
  end
138
+
139
+ describe "merb-cache-actions" do
140
+ it "should cache multiple actions passed as arguments to it (cache_actions_1, cache_actions_2, cache_actions_3)" do
141
+ c = get("/cache_controller/cache_actions_1")
142
+ c.body.strip.should == "test cache_actions_1"
143
+ c.cached?("/cache_controller/cache_actions_1").should be_true
144
+ c.cached_action?("cache_actions_1").should be_true
145
+ c.cache_get("/cache_controller/cache_actions_1").should == "test cache_actions_1"
146
+
147
+ c = get("/cache_controller/cache_actions_2")
148
+ c.body.strip.should == "test cache_actions_2"
149
+ c.cached?("/cache_controller/cache_actions_2").should be_true
150
+ c.cached_action?("cache_actions_2").should be_true
151
+ c.cache_get("/cache_controller/cache_actions_2").should == "test cache_actions_2"
152
+ sleep 4
153
+ c.cache_get("/cache_controller/cache_actions_2").should be_nil
154
+ c.cached_action?(:action => "cache_actions_2").should be_false
155
+
156
+ c = get("/cache_controller/cache_actions_3")
157
+ CACHE.cached_action?(:key => "/cache_controller/cache_actions_3").should be_true
158
+
159
+ c = get("/cache_controller/cache_actions_3/cache")
160
+ CACHE.cached_action?(:key => "/cache_controller/cache_actions_3/cache").should be_false
161
+ end
162
+ end
data/spec/spec_helper.rb CHANGED
@@ -20,6 +20,7 @@ def use_cache_store(store, orm = nil)
20
20
  :store => store,
21
21
  :cache_directory => File.dirname(__FILE__) / "tmp/cache",
22
22
  :cache_html_directory => File.dirname(__FILE__) / "tmp/html",
23
+ :no_tracking => false
23
24
  }
24
25
  FileUtils.rm_rf(Dir.glob(File.dirname(__FILE__) / "/tmp"))
25
26
  case store
metadata CHANGED
@@ -1,25 +1,26 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merb-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Boussinet
8
- autorequire: merb-cache
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-04 00:00:00 -05:00
12
+ date: 2008-08-13 00:00:00 +03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: merb-core
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
20
21
  - - ">="
21
22
  - !ruby/object:Gem::Version
22
- version: 0.9.3
23
+ version: 0.9.4
23
24
  version:
24
25
  description: Merb plugin that provides caching (page, action, fragment, object)
25
26
  email: alex.boussinet@gmail.com
@@ -55,6 +56,8 @@ files:
55
56
  - spec/config
56
57
  - spec/config/database.yml
57
58
  - spec/controller.rb
59
+ - spec/log
60
+ - spec/log/merb_test.log
58
61
  - spec/merb-cache-action_spec.rb
59
62
  - spec/merb-cache-fragment_spec.rb
60
63
  - spec/merb-cache-page_spec.rb
@@ -65,7 +68,7 @@ files:
65
68
  - spec/views/cache_controller/action1.html.erb
66
69
  - spec/views/cache_controller/action2.html.haml
67
70
  has_rdoc: true
68
- homepage: http://www.merbivore.com
71
+ homepage: http://merbivore.com
69
72
  post_install_message:
70
73
  rdoc_options: []
71
74
 
@@ -85,8 +88,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
88
  version:
86
89
  requirements: []
87
90
 
88
- rubyforge_project:
89
- rubygems_version: 1.0.1
91
+ rubyforge_project: merb
92
+ rubygems_version: 1.2.0
90
93
  signing_key:
91
94
  specification_version: 2
92
95
  summary: Merb plugin that provides caching (page, action, fragment, object)