padrino-cache 0.10.2 → 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
data/.document CHANGED
@@ -1,5 +1,5 @@
1
- README.rdoc
2
1
  lib/**/*.rb
3
2
  bin/*
4
- features/**/*.feature
5
- LICENSE
3
+ -
4
+ README.rdoc
5
+ LICENSE.txt
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --title 'Padrino Cache Documentation' --protected
File without changes
data/lib/padrino-cache.rb CHANGED
@@ -8,13 +8,14 @@ module Padrino
8
8
  ##
9
9
  # Returns the caching engine
10
10
  #
11
- # ==== Examples
11
+ # @example
12
12
  # # with: Padrino.cache = Padrino::Cache::Store::File.new(/my/cache/path)
13
13
  # Padrino.cache.set('val', 'test')
14
14
  # Padrino.cache.get('val') # => 'test'
15
15
  # Padrino.cache.delete('val')
16
16
  # Padrino.cache.flush
17
17
  #
18
+ # @api public
18
19
  def cache
19
20
  @_cache
20
21
  end
@@ -22,7 +23,10 @@ module Padrino
22
23
  ##
23
24
  # Set the caching engine
24
25
  #
25
- # === Examples
26
+ # @param value
27
+ # Instance of Padrino::Cache::Store
28
+ #
29
+ # @example
26
30
  # Padrino.cache = Padrino::Cache::Store::Memcache.new(::Memcached.new('127.0.0.1:11211', :exception_retry_limit => 1))
27
31
  # Padrino.cache = Padrino::Cache::Store::Memcache.new(::Dalli::Client.new('127.0.0.1:11211', :exception_retry_limit => 1))
28
32
  # Padrino.cache = Padrino::Cache::Store::Redis.new(::Redis.new(:host => '127.0.0.1', :port => 6379, :db => 0))
@@ -30,13 +34,14 @@ module Padrino
30
34
  # Padrino.cache = Padrino::Cache::Store::Memory.new(50)
31
35
  # Padrino.cache = Padrino::Cache::Store::File.new(/my/cache/path)
32
36
  #
33
- # You can manage your cache from anywhere in your app:
37
+ # # You can manage your cache from anywhere in your app:
34
38
  #
35
39
  # Padrino.cache.set('val', 'test')
36
40
  # Padrino.cache.get('val') # => 'test'
37
41
  # Padrino.cache.delete('val')
38
42
  # Padrino.cache.flush
39
43
  #
44
+ # @api public
40
45
  def cache=(value)
41
46
  @_cache = value
42
47
  end
@@ -81,6 +86,7 @@ module Padrino
81
86
  # MyApp.cache.delete('val')
82
87
  # MyApp.cache.flush
83
88
  #
89
+ # @api public
84
90
  def registered(app)
85
91
  app.helpers Padrino::Cache::Helpers::CacheStore
86
92
  app.helpers Padrino::Cache::Helpers::Fragment
@@ -90,6 +96,7 @@ module Padrino
90
96
  end
91
97
  alias :included :registered
92
98
 
99
+ # @api private
93
100
  def padrino_route_added(route, verb, path, args, options, block) # @private
94
101
  Padrino::Cache::Helpers::Page.padrino_route_added(route, verb, path, args, options, block)
95
102
  end
@@ -2,6 +2,8 @@ module Padrino
2
2
  module Cache
3
3
  module Helpers
4
4
  module CacheStore # @private
5
+
6
+ # @api private
5
7
  def expire(*key)
6
8
  if key.size == 1 and key.first.is_a?(String)
7
9
  settings.cache.delete(key)
@@ -20,7 +20,14 @@ module Padrino
20
20
  # This helper is used anywhere in your application you would like to associate a fragment
21
21
  # to be cached. It can be used in within a route:
22
22
  #
23
- # ==== Examples
23
+ # @param [String] key
24
+ # cache key
25
+ # @param [Hash] opts
26
+ # cache options, e.g :expires_in
27
+ # @param [Proc]
28
+ # Execution result to store in the cache
29
+ #
30
+ # @example
24
31
  # # Caching a fragment
25
32
  # class MyTweets < Padrino::Application
26
33
  # enable :caching # turns on caching mechanism
@@ -40,16 +47,17 @@ module Padrino
40
47
  # end
41
48
  # end
42
49
  #
50
+ # @api public
43
51
  def cache(key, opts = nil, &block)
44
52
  if settings.caching?
45
53
  began_at = Time.now
46
54
  if value = settings.cache.get(key.to_s)
47
- logger.debug "GET Fragment (%0.4fms) %s" % [Time.now-began_at, key.to_s] if defined?(logger)
55
+ logger.debug "GET Fragment", began_at, key.to_s if defined?(logger)
48
56
  concat_content(value)
49
57
  else
50
58
  value = capture_html(&block)
51
59
  settings.cache.set(key.to_s, value, opts)
52
- logger.debug "SET Fragment (%0.4fms) %s" % [Time.now-began_at, key.to_s] if defined?(logger)
60
+ logger.debug "SET Fragment", began_at, key.to_s if defined?(logger)
53
61
  concat_content(value)
54
62
  end
55
63
  end
@@ -7,7 +7,7 @@ module Padrino
7
7
  # By default, cached content is persisted with a "file store"--that is, in a
8
8
  # subdirectory of your application root.
9
9
  #
10
- # ==== Examples
10
+ # @example
11
11
  # # Setting content expiry time
12
12
  # class CachedApp < Padrino::Application
13
13
  # enable :caching # turns on caching mechanism
@@ -43,41 +43,69 @@ module Padrino
43
43
  # be executed; rather, its previous output will be sent to the client with a
44
44
  # 200 OK status code.
45
45
  #
46
+ # @param [Integer] time
47
+ # Time til expiration (seconds)
48
+ #
49
+ # @example
50
+ # controller '/blog', :cache => true do
51
+ # expires_in 15
52
+ #
53
+ # get '/entries' do
54
+ # # expires_in 15 => can also be defined inside a single route
55
+ # 'just broke up eating twinkies lol'
56
+ # end
57
+ # end
58
+ #
59
+ # @api public
46
60
  def expires_in(time)
47
- @_last_expires_in = time
61
+ @route.cache_expires_in = time if @route
62
+ @_last_expires_in = time
48
63
  end
49
64
 
50
65
  ##
51
66
  # This helper is used within a route or route to indicate the name in the cache.
52
67
  #
68
+ # @param [Symbol] name
69
+ # cache key
70
+ #
71
+ # @example
72
+ # controller '/blog', :cache => true do
73
+ #
74
+ # get '/post/:id' do
75
+ # cache_key :my_name
76
+ # @post = Post.find(params[:id])
77
+ # end
78
+ # end
79
+ #
80
+ # @api public
53
81
  def cache_key(name)
54
- @_cache_key = name
82
+ @route.cache_key = name
55
83
  end
56
84
 
85
+ # @api private
57
86
  def self.padrino_route_added(route, verb, path, args, options, block) # @private
58
87
  if route.cache and %w(GET HEAD).include?(verb)
59
- route.add_before_filter(Proc.new {
88
+ route.before_filters do
60
89
  if settings.caching?
61
90
  began_at = Time.now
62
- value = settings.cache.get(@_cache_key || env['PATH_INFO'])
63
- @_cache_key = nil
64
- logger.debug "GET Cache (%0.4fms) %s" % [Time.now-began_at, env['PATH_INFO']] if defined?(logger) && value
91
+ value = settings.cache.get(@route.cache_key || env['PATH_INFO'])
92
+ logger.debug "GET Cache", began_at, env['PATH_INFO'] if defined?(logger) && value
65
93
  halt 200, value if value
66
94
  end
67
- })
68
- route.add_after_filter(Proc.new { |_|
95
+ end
96
+
97
+ route.after_filters do
69
98
  if settings.caching?
70
99
  began_at = Time.now
71
100
  if @_last_expires_in
72
- settings.cache.set(@_cache_key || env['PATH_INFO'], @_response_buffer, :expires_in => @_last_expires_in)
101
+ settings.cache.set(@route.cache_key || env['PATH_INFO'], @_response_buffer, :expires_in => @_last_expires_in)
73
102
  @_last_expires_in = nil
74
103
  else
75
- settings.cache.set(@_cache_key || env['PATH_INFO'], @_response_buffer)
104
+ settings.cache.set(@route.cache_key || env['PATH_INFO'], @_response_buffer)
76
105
  end
77
- @_cache_key = nil
78
- logger.debug "SET Cache (%0.4fms) %s" % [Time.now-began_at, env['PATH_INFO']] if defined?(logger)
106
+ logger.debug "SET Cache", began_at, env['PATH_INFO'] if defined?(logger)
79
107
  end
80
- })
108
+ end
81
109
  end
82
110
  end
83
111
  end # Page
@@ -8,11 +8,15 @@ module Padrino
8
8
  ##
9
9
  # Initialize File store with File root
10
10
  #
11
- # ==== Examples
11
+ # @param [String] root
12
+ # path to cache file
13
+ #
14
+ # @example
12
15
  # Padrino.cache = Padrino::Cache::Store::File.new("path/to")
13
16
  # # or from your app
14
17
  # set :cache, Padrino::Cache::Store::File.new("path/to")
15
18
  #
19
+ # @api public
16
20
  def initialize(root)
17
21
  @root = root
18
22
  end
@@ -20,10 +24,14 @@ module Padrino
20
24
  ##
21
25
  # Return the a value for the given key
22
26
  #
23
- # ==== Examples
27
+ # @param [String] key
28
+ # cache key
29
+ #
30
+ # @example
24
31
  # # with MyApp.cache.set('records', records)
25
32
  # MyApp.cache.get('records')
26
33
  #
34
+ # @api public
27
35
  def get(key)
28
36
  init
29
37
  if ::File.exist?(path_for_key(key))
@@ -45,10 +53,16 @@ module Padrino
45
53
  # Set the value for a given key and optionally with an expire time
46
54
  # Default expiry time is 86400.
47
55
  #
48
- # ==== Examples
56
+ # @param [String] key
57
+ # cache key
58
+ # @param value
59
+ # value of cache key
60
+ #
61
+ # @example
49
62
  # MyApp.cache.set('records', records)
50
63
  # MyApp.cache.set('records', records, :expires_in => 30) # => 30 seconds
51
64
  #
65
+ # @api public
52
66
  def set(key, value, opts = nil)
53
67
  init
54
68
  if opts && opts[:expires_in]
@@ -64,10 +78,16 @@ module Padrino
64
78
  ##
65
79
  # Delete the value for a given key
66
80
  #
67
- # ==== Examples
81
+ # @param [String] key
82
+ # cache key
83
+ # @param value
84
+ # value of cache key
85
+ #
86
+ # @example
68
87
  # # with: MyApp.cache.set('records', records)
69
88
  # MyApp.cache.delete('records')
70
89
  #
90
+ # @api public
71
91
  def delete(key)
72
92
  init
73
93
  Array(key).each { |k| FileUtils.rm_rf(path_for_key(k)) }
@@ -76,23 +96,27 @@ module Padrino
76
96
  ##
77
97
  # Reinitialize your cache
78
98
  #
79
- # ==== Examples
99
+ # @example
80
100
  # # with: MyApp.cache.set('records', records)
81
101
  # MyApp.cache.flush
82
102
  # MyApp.cache.get('records') # => nil
83
103
  #
104
+ # @api public
84
105
  def flush
85
106
  FileUtils.rm_rf(@root)
86
107
  end
87
108
 
88
109
  private
89
- def path_for_key(key)
90
- ::File.join(@root, Rack::Utils.escape(key.to_s))
91
- end
92
110
 
93
- def init
94
- FileUtils.mkdir_p(@root) unless ::File.exist?(@root)
95
- end
111
+ # @api private
112
+ def path_for_key(key)
113
+ ::File.join(@root, Rack::Utils.escape(key.to_s))
114
+ end
115
+
116
+ # @api private
117
+ def init
118
+ FileUtils.mkdir_p(@root) unless ::File.exist?(@root)
119
+ end
96
120
  end # File
97
121
  end # Store
98
122
  end # Cache
@@ -8,13 +8,17 @@ module Padrino
8
8
  ##
9
9
  # Initialize Memcache store with client connection.
10
10
  #
11
- # ==== Examples
11
+ # @param client
12
+ # instance of Memcache library
13
+ #
14
+ # @example
12
15
  # Padrino.cache = Padrino::Cache::Store::Memcache.new(::Memcached.new('127.0.0.1:11211'))
13
16
  # Padrino.cache = Padrino::Cache::Store::Memcache.new(::Memcached.new('127.0.0.1:11211', :exception_retry_limit => 1))
14
17
  # # or from your app
15
18
  # set :cache, Padrino::Cache::Store::Memcache.new(::Memcached.new('127.0.0.1:11211'))
16
19
  # set :cache, Padrino::Cache::Store::Memcache.new(::Memcached.new('127.0.0.1:11211', :exception_retry_limit => 1))
17
20
  #
21
+ # @api public
18
22
  def initialize(client)
19
23
  @backend = client
20
24
  rescue
@@ -24,10 +28,14 @@ module Padrino
24
28
  ##
25
29
  # Return the a value for the given key
26
30
  #
27
- # ==== Examples
31
+ # @param [String] key
32
+ # cache key to retrieve value
33
+ #
34
+ # @example
28
35
  # # with MyApp.cache.set('records', records)
29
36
  # MyApp.cache.get('records')
30
37
  #
38
+ # @api public
31
39
  def get(key)
32
40
  @backend.get(key)
33
41
  rescue Memcached::NotFound
@@ -38,10 +46,16 @@ module Padrino
38
46
  # Set the value for a given key and optionally with an expire time
39
47
  # Default expiry time is 86400.
40
48
  #
41
- # ==== Examples
49
+ # @param [String] key
50
+ # cache key
51
+ # @param value
52
+ # value of cache key
53
+ #
54
+ # @example
42
55
  # MyApp.cache.set('records', records)
43
56
  # MyApp.cache.set('records', records, :expires_in => 30) # => 30 seconds
44
57
  #
58
+ # @api public
45
59
  def set(key, value, opts = nil)
46
60
  if opts && opts[:expires_in]
47
61
  expires_in = opts[:expires_in].to_i
@@ -55,10 +69,14 @@ module Padrino
55
69
  ##
56
70
  # Delete the value for a given key
57
71
  #
58
- # ==== Examples
72
+ # @param [String] key
73
+ # cache key
74
+ #
75
+ # @example
59
76
  # # with: MyApp.cache.set('records', records)
60
77
  # MyApp.cache.delete('records')
61
78
  #
79
+ # @api public
62
80
  def delete(key)
63
81
  @backend.delete(key)
64
82
  end
@@ -66,11 +84,12 @@ module Padrino
66
84
  ##
67
85
  # Reinitialize your cache
68
86
  #
69
- # ==== Examples
87
+ # @example
70
88
  # # with: MyApp.cache.set('records', records)
71
89
  # MyApp.cache.flush
72
90
  # MyApp.cache.get('records') # => nil
73
91
  #
92
+ # @api public
74
93
  def flush
75
94
  @backend.respond_to?(:flush_all) ? @backend.flush_all : @backend.flush
76
95
  end
@@ -8,11 +8,15 @@ module Padrino
8
8
  ##
9
9
  # Initialize Memory Store with memory size
10
10
  #
11
- # ==== Examples
11
+ # @param [Integer] size
12
+ # Size of memory cache
13
+ #
14
+ # @example
12
15
  # Padrino.cache = Padrino::Cache::Store::Memory.new(10000)
13
16
  # # or from your app
14
17
  # set :cache, Padrino::Cache::Store::Memory.new(10000)
15
18
  #
19
+ # @api public
16
20
  def initialize(size = 5000)
17
21
  @size, @entries, @index = size, [], {}
18
22
  end
@@ -20,10 +24,14 @@ module Padrino
20
24
  ##
21
25
  # Return the a value for the given key
22
26
  #
23
- # ==== Examples
27
+ # @param [String] key
28
+ # cache key to retrieve value
29
+ #
30
+ # @example
24
31
  # # with MyApp.cache.set('records', records)
25
32
  # MyApp.cache.get('records')
26
33
  #
34
+ # @api public
27
35
  def get(key)
28
36
  if @index.key?(key) and value = @index[key]
29
37
  expires_in, body = value
@@ -43,10 +51,16 @@ module Padrino
43
51
  # Set the value for a given key and optionally with an expire time.
44
52
  # Default expiry is 86400.
45
53
  #
46
- # ==== Examples
54
+ # @param [String] key
55
+ # cache key
56
+ # @param value
57
+ # value of cache key
58
+ #
59
+ # @example
47
60
  # MyApp.cache.set('records', records)
48
61
  # MyApp.cache.set('records', records, :expires_in => 30) # => 30 seconds
49
62
  #
63
+ # @api public
50
64
  def set(key, value, opts = nil)
51
65
  delete(key) if @index.key?(key)
52
66
  if opts && opts[:expires_in]
@@ -66,10 +80,14 @@ module Padrino
66
80
  ##
67
81
  # Delete the value for a given key
68
82
  #
69
- # ==== Examples
83
+ # @param [String] key
84
+ # cache key
85
+ #
86
+ # @example
70
87
  # # with: MyApp.cache.set('records', records)
71
88
  # MyApp.cache.delete('records')
72
89
  #
90
+ # @api public
73
91
  def delete(key)
74
92
  @index.delete(key)
75
93
  end
@@ -77,11 +95,12 @@ module Padrino
77
95
  ##
78
96
  # Reinitialize your cache
79
97
  #
80
- # ==== Examples
98
+ # @example
81
99
  # # with: MyApp.cache.set('records', records)
82
100
  # MyApp.cache.flush
83
101
  # MyApp.cache.get('records') # => nil
84
102
  #
103
+ # @api public
85
104
  def flush
86
105
  @index = Hash.new
87
106
  end
@@ -8,11 +8,17 @@ module Padrino
8
8
  ##
9
9
  # Initialize Mongo store with client connection and optional username and password.
10
10
  #
11
- # ==== Examples
11
+ # @param client
12
+ # Instance of Mongo connection
13
+ # @param [Hash] opts
14
+ # optiosn to pass into Mongo connection
15
+ #
16
+ # @example
12
17
  # Padrino.cache = Padrino::Cache::Store::Mongo.new(::Mongo::Connection.new('127.0.0.1', 27017).db('padrino'), :username => 'username', :password => 'password', :size => 64, :max => 100, :collection => 'cache')
13
18
  # # or from your app
14
19
  # set :cache, Padrino::Cache::Store::Mongo.new(::Mongo::Connection.new('127.0.0.1', 27017).db('padrino'), :username => 'username', :password => 'password', :size => 64, :max => 100, :collection => 'cache')
15
20
  #
21
+ # @api public
16
22
  def initialize(client, opts={})
17
23
  @client = client
18
24
  @options = {
@@ -31,7 +37,10 @@ module Padrino
31
37
  ##
32
38
  # Return the a value for the given key
33
39
  #
34
- # ==== Examples
40
+ # @param [String] key
41
+ # cache key
42
+ #
43
+ # @example
35
44
  # # with MyApp.cache.set('records', records)
36
45
  # MyApp.cache.get('records')
37
46
  #
@@ -45,10 +54,16 @@ module Padrino
45
54
  # Set or update the value for a given key and optionally with an expire time
46
55
  # Default expiry is Time.now + 86400s.
47
56
  #
48
- # ==== Examples
57
+ # @param [String] key
58
+ # cache key
59
+ # @param value
60
+ # value of cache key
61
+ #
62
+ # @example
49
63
  # MyApp.cache.set('records', records)
50
64
  # MyApp.cache.set('records', records, :expires_in => 30) # => 30 seconds
51
65
  #
66
+ # @api public
52
67
  def set(key, value, opts = nil)
53
68
  key = key.to_s
54
69
  value = BSON::Binary.new(Marshal.dump(value)) if value
@@ -67,10 +82,14 @@ module Padrino
67
82
  ##
68
83
  # Delete the value for a given key
69
84
  #
70
- # ==== Examples
85
+ # @param [String] key
86
+ # cache key
87
+ #
88
+ # @example
71
89
  # # with: MyApp.cache.set('records', records)
72
90
  # MyApp.cache.delete('records')
73
91
  #
92
+ # @api public
74
93
  def delete(key)
75
94
  if not @options[:capped]
76
95
  @backend.remove({:_id => key})
@@ -83,17 +102,20 @@ module Padrino
83
102
  ##
84
103
  # Reinitialize your cache
85
104
  #
86
- # ==== Examples
105
+ # @example
87
106
  # # with: MyApp.cache.set('records', records)
88
107
  # MyApp.cache.flush
89
108
  # MyApp.cache.get('records') # => nil
90
109
  #
110
+ # @api public
91
111
  def flush
92
112
  @backend.drop
93
113
  @backend = get_collection
94
114
  end
95
115
 
96
116
  private
117
+
118
+ # @api private
97
119
  def get_collection
98
120
  if @client.collection_names.include?(@options[:collection]) or !@options[:capped]
99
121
  @client.collection @options[:collection]
@@ -8,11 +8,15 @@ module Padrino
8
8
  ##
9
9
  # Initialize Redis store with client connection.
10
10
  #
11
- # ==== Examples
11
+ # @param client
12
+ # Instance of Redis client
13
+ #
14
+ # @example
12
15
  # Padrino.cache = Padrino::Cache::Store::Redis.new(::Redis.new(:host => '127.0.0.1', :port => 6379, :db => 0))
13
16
  # # or from your app
14
17
  # set :cache, Padrino::Cache::Store::Redis.new(::Redis.new(:host => '127.0.0.1', :port => 6379, :db => 0))
15
18
  #
19
+ # @api public
16
20
  def initialize(client)
17
21
  @backend = client
18
22
  end
@@ -20,10 +24,14 @@ module Padrino
20
24
  ##
21
25
  # Return the a value for the given key
22
26
  #
23
- # ==== Examples
27
+ # @param [String] key
28
+ # cache key
29
+ #
30
+ # @example
24
31
  # # with MyApp.cache.set('records', records)
25
32
  # MyApp.cache.get('records')
26
33
  #
34
+ # @api public
27
35
  def get(key)
28
36
  code = @backend.get(key)
29
37
  Marshal.load(code) if code.present?
@@ -33,10 +41,16 @@ module Padrino
33
41
  # Set the value for a given key and optionally with an expire time
34
42
  # Default expiry is 86400.
35
43
  #
36
- # ==== Examples
44
+ # @param [String] key
45
+ # cache key
46
+ # @param value
47
+ # value of cache key
48
+ #
49
+ # @example
37
50
  # MyApp.cache.set('records', records)
38
51
  # MyApp.cache.set('records', records, :expires_in => 30) # => 30 seconds
39
52
  #
53
+ # @api public
40
54
  def set(key, value, opts = nil)
41
55
  value = Marshal.dump(value) if value
42
56
  if opts && opts[:expires_in]
@@ -51,10 +65,14 @@ module Padrino
51
65
  ##
52
66
  # Delete the value for a given key
53
67
  #
54
- # ==== Examples
68
+ # @param [String] key
69
+ # cache key
70
+ #
71
+ # @example
55
72
  # # with: MyApp.cache.set('records', records)
56
73
  # MyApp.cache.delete('records')
57
74
  #
75
+ # @api public
58
76
  def delete(key)
59
77
  @backend.del(key)
60
78
  end
@@ -62,11 +80,12 @@ module Padrino
62
80
  ##
63
81
  # Reinitialize your cache
64
82
  #
65
- # ==== Examples
83
+ # @example
66
84
  # # with: MyApp.cache.set('records', records)
67
85
  # MyApp.cache.flush
68
86
  # MyApp.cache.get('records') # => nil
69
87
  #
88
+ # @api public
70
89
  def flush
71
90
  @backend.flushdb
72
91
  end
data/test/helper.rb CHANGED
@@ -7,7 +7,7 @@ require 'padrino-cache'
7
7
  require 'fileutils'
8
8
  require 'uuid'
9
9
 
10
- class Test::Unit::TestCase
10
+ class MiniTest::Spec
11
11
 
12
12
  def executable_on_path(binary)
13
13
  @matches = []
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/helper')
2
2
 
3
- class TestPadrinoCache < Test::Unit::TestCase
3
+ describe "PadrinoCache" do
4
4
 
5
5
  def teardown
6
6
  tmp = File.expand_path(File.dirname(__FILE__) + "/tmp")
@@ -58,20 +58,45 @@ class TestPadrinoCache < Test::Unit::TestCase
58
58
  end
59
59
 
60
60
  should 'accept custom cache keys' do
61
+ called = false
61
62
  mock_app do
62
63
  register Padrino::Cache
63
64
  enable :caching
64
- get('/foo', :cache => true){ cache_key :foo; 'foo' }
65
- get('/bar', :cache => true){ cache_key :bar; 'bar' }
65
+ get '/foo', :cache => true do
66
+ if called
67
+ "you'll never see me"
68
+ else
69
+ cache_key :foo
70
+ called = 'foo'
71
+
72
+ called
73
+ end
74
+ end
75
+
76
+ get '/bar', :cache => true do
77
+ if called
78
+ cache_key :bar
79
+ called = 'bar'
80
+
81
+ called
82
+ else
83
+ "you'll never see me"
84
+ end
85
+ end
66
86
  end
67
87
  get "/foo"
68
88
  assert_equal 200, status
69
89
  assert_equal 'foo', body
70
90
  assert_equal 'foo', @app.cache.get(:foo)
91
+ get "/foo"
92
+ assert_equal 'foo', body
93
+
71
94
  get "/bar"
72
95
  assert_equal 200, status
73
96
  assert_equal 'bar', body
74
97
  assert_equal 'bar', @app.cache.get(:bar)
98
+ get "/bar"
99
+ assert_equal 'bar', body
75
100
  end
76
101
 
77
102
  should 'delete based on urls' do
data/test/test_stores.rb CHANGED
@@ -44,7 +44,7 @@ begin
44
44
  # we're just going to assume memcached is running on the default port
45
45
  Padrino::Cache::Store::Memcache.new(::MemCache.new('127.0.0.1:11211', :exception_retry_limit => 1)).set('ping','alive')
46
46
 
47
- class TestMemcacheStore < Test::Unit::TestCase
47
+ describe "MemcacheStore" do
48
48
  def setup
49
49
  Padrino.cache = Padrino::Cache::Store::Memcache.new(::MemCache.new('127.0.0.1:11211', :exception_retry_limit => 1))
50
50
  Padrino.cache.flush
@@ -65,7 +65,7 @@ begin
65
65
  # we're just going to assume memcached is running on the default port
66
66
  Padrino::Cache::Store::Memcache.new(::Dalli::Client.new('127.0.0.1:11211', :exception_retry_limit => 1).set('ping','alive'))
67
67
 
68
- class TestMemcacheWithDalliStore < Test::Unit::TestCase
68
+ describe "MemcacheWithDalliStore" do
69
69
  def setup
70
70
  Padrino.cache = Padrino::Cache::Store::Memcache.new(::Dalli::Client.new('127.0.0.1:11211', :exception_retry_limit => 1))
71
71
  Padrino.cache.flush
@@ -85,7 +85,7 @@ end
85
85
  begin
86
86
  require 'redis'
87
87
  Padrino::Cache::Store::Redis.new(::Redis.new(:host => '127.0.0.1', :port => 6379, :db => 0).set('ping','alive'))
88
- class TestRedisStore < Test::Unit::TestCase
88
+ describe "RedisStore" do
89
89
  def setup
90
90
  Padrino.cache = Padrino::Cache::Store::Redis.new(::Redis.new(:host => '127.0.0.1', :port => 6379, :db => 0))
91
91
  Padrino.cache.flush
@@ -105,7 +105,7 @@ end
105
105
  begin
106
106
  require 'mongo'
107
107
  Padrino::Cache::Store::Mongo.new(::Mongo::Connection.new('127.0.0.1', 27017).db('padrino-cache_test'))
108
- class TestMongoStore < Test::Unit::TestCase
108
+ describe "MongoStore" do
109
109
  def setup
110
110
  Padrino.cache = Padrino::Cache::Store::Mongo.new(::Mongo::Connection.new('127.0.0.1', 27017).db('padrino-cache_test'), {:size => 10, :collection => 'cache'})
111
111
  Padrino.cache.flush
@@ -122,7 +122,7 @@ rescue LoadError
122
122
  warn "Skipping Mongo tests"
123
123
  end
124
124
 
125
- class TestFileStore < Test::Unit::TestCase
125
+ describe "FileStore" do
126
126
  def setup
127
127
  @apptmp = "#{Dir.tmpdir}/padrino-tests/#{UUID.new.generate}"
128
128
  FileUtils.mkdir_p(@apptmp)
@@ -137,7 +137,7 @@ class TestFileStore < Test::Unit::TestCase
137
137
  eval COMMON_TESTS
138
138
  end
139
139
 
140
- class TestInMemoryStore < Test::Unit::TestCase
140
+ describe "InMemoryStore" do
141
141
  def setup
142
142
  Padrino.cache = Padrino::Cache::Store::Memory.new(50)
143
143
  @test_key = "val_#{Time.now.to_i}"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-cache
3
3
  version: !ruby/object:Gem::Version
4
- hash: 51
4
+ hash: 49
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 10
9
- - 2
10
- version: 0.10.2
9
+ - 3
10
+ version: 0.10.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Padrino Team
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2011-08-31 00:00:00 -07:00
21
+ date: 2011-10-03 00:00:00 -07:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
@@ -29,12 +29,12 @@ dependencies:
29
29
  requirements:
30
30
  - - "="
31
31
  - !ruby/object:Gem::Version
32
- hash: 51
32
+ hash: 49
33
33
  segments:
34
34
  - 0
35
35
  - 10
36
- - 2
37
- version: 0.10.2
36
+ - 3
37
+ version: 0.10.3
38
38
  type: :runtime
39
39
  version_requirements: *id001
40
40
  description: Caching support for memcached, page and fragment
@@ -48,7 +48,8 @@ extra_rdoc_files:
48
48
  files:
49
49
  - .document
50
50
  - .gitignore
51
- - LICENSE
51
+ - .yardopts
52
+ - LICENSE.txt
52
53
  - README.rdoc
53
54
  - Rakefile
54
55
  - lib/padrino-cache.rb