cachetastic 2.1.4 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +21 -0
- data/README +57 -43
- data/doc/classes/Cachetastic/Adapters.html +180 -0
- data/doc/classes/Cachetastic/Adapters/Base.html +206 -123
- data/doc/classes/Cachetastic/Adapters/File.html +17 -130
- data/doc/classes/Cachetastic/Adapters/LocalMemory.html +7 -228
- data/doc/classes/Cachetastic/Adapters/Memcached.html +193 -0
- data/doc/classes/Cachetastic/Cache.html +425 -0
- data/doc/classes/Cachetastic/Cacheable.html +26 -30
- data/doc/classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html +66 -62
- data/doc/classes/Cachetastic/Cacheable/ClassOnlyMethods.html +30 -30
- data/doc/classes/Cachetastic/Logger.html +31 -33
- data/doc/created.rid +1 -1
- data/doc/files/{lib/cachetastic/adapters/html_file_rb.html → LICENSE.html} +29 -34
- data/doc/files/README.html +91 -57
- data/doc/files/lib/cachetastic/adapters/base_rb.html +1 -39
- data/doc/files/lib/cachetastic/adapters/file_rb.html +1 -21
- data/doc/files/lib/cachetastic/adapters/local_memory_rb.html +1 -9
- data/doc/files/lib/cachetastic/{ruby_extensions/kernel_rb.html → adapters/memcached_rb.html} +4 -4
- data/doc/files/lib/cachetastic/{ruby_extensions/string_rb.html → cache_rb.html} +5 -5
- data/doc/files/lib/cachetastic/cacheable_rb.html +1 -1
- data/doc/files/lib/cachetastic/{caches/base_rb.html → extensions/string_rb.html} +5 -5
- data/doc/files/lib/cachetastic/logger_rb.html +1 -7
- data/doc/files/lib/cachetastic/{adapters/store_object_rb.html → store_object_rb.html} +3 -3
- data/doc/files/lib/cachetastic_rb.html +4 -95
- data/doc/fr_class_index.html +3 -15
- data/doc/fr_file_index.html +5 -16
- data/doc/fr_method_index.html +26 -78
- data/lib/cachetastic.rb +16 -70
- data/lib/cachetastic/adapters/base.rb +178 -76
- data/lib/cachetastic/adapters/file.rb +63 -46
- data/lib/cachetastic/adapters/local_memory.rb +36 -67
- data/lib/cachetastic/adapters/memcached.rb +114 -0
- data/lib/cachetastic/cache.rb +165 -0
- data/lib/cachetastic/cacheable.rb +19 -15
- data/lib/cachetastic/extensions/string.rb +8 -0
- data/lib/cachetastic/logger.rb +41 -41
- data/lib/cachetastic/store_object.rb +22 -0
- metadata +43 -64
- data/bin/cachetastic_drb_server +0 -115
- data/doc/classes/ActiveRecord/Base.html +0 -194
- data/doc/classes/CGI/Session/CachetasticStore.html +0 -124
- data/doc/classes/Cachetastic/Adapters/Drb.html +0 -332
- data/doc/classes/Cachetastic/Adapters/FileBase.html +0 -309
- data/doc/classes/Cachetastic/Adapters/HtmlFile.html +0 -224
- data/doc/classes/Cachetastic/Adapters/Memcache.html +0 -498
- data/doc/classes/Cachetastic/Caches/Base.html +0 -643
- data/doc/classes/Cachetastic/Caches/Base/RegisteredCaches.html +0 -179
- data/doc/classes/Cachetastic/Caches/MackSessionCache.html +0 -119
- data/doc/classes/Cachetastic/Caches/PageCache.html +0 -121
- data/doc/classes/Cachetastic/Caches/RailsSessionCache.html +0 -154
- data/doc/classes/Cachetastic/Connection.html +0 -212
- data/doc/classes/Cachetastic/Errors/UnsupportedAdapter.html +0 -146
- data/doc/classes/Object.html +0 -222
- data/doc/classes/String.html +0 -172
- data/doc/files/lib/cachetastic/adapters/drb_rb.html +0 -115
- data/doc/files/lib/cachetastic/adapters/file_base_rb.html +0 -109
- data/doc/files/lib/cachetastic/adapters/memcache_rb.html +0 -127
- data/doc/files/lib/cachetastic/caches/mack_session_cache_rb.html +0 -107
- data/doc/files/lib/cachetastic/caches/page_cache_rb.html +0 -109
- data/doc/files/lib/cachetastic/caches/rails_session_cache_rb.html +0 -107
- data/doc/files/lib/cachetastic/connection_rb.html +0 -107
- data/doc/files/lib/cachetastic/errors/unsupported_adapter_rb.html +0 -101
- data/doc/files/lib/cachetastic/rails_extensions/active_record_base_rb.html +0 -101
- data/doc/files/lib/cachetastic/rails_extensions/cgi_session_store_rb.html +0 -109
- data/doc/files/lib/cachetastic/ruby_extensions/object_rb.html +0 -101
- data/lib/cachetastic/adapters/drb.rb +0 -51
- data/lib/cachetastic/adapters/file_base.rb +0 -86
- data/lib/cachetastic/adapters/html_file.rb +0 -68
- data/lib/cachetastic/adapters/memcache.rb +0 -114
- data/lib/cachetastic/adapters/store_object.rb +0 -28
- data/lib/cachetastic/caches/base.rb +0 -238
- data/lib/cachetastic/caches/mack_session_cache.rb +0 -3
- data/lib/cachetastic/caches/page_cache.rb +0 -6
- data/lib/cachetastic/caches/rails_session_cache.rb +0 -12
- data/lib/cachetastic/connection.rb +0 -24
- data/lib/cachetastic/errors/unsupported_adapter.rb +0 -7
- data/lib/cachetastic/rails_extensions/active_record_base.rb +0 -24
- data/lib/cachetastic/rails_extensions/cgi_session_store.rb +0 -59
- data/lib/cachetastic/ruby_extensions/kernel.rb +0 -25
- data/lib/cachetastic/ruby_extensions/object.rb +0 -22
- data/lib/cachetastic/ruby_extensions/string.rb +0 -15
- data/test/active_record_test.rb +0 -89
- data/test/cacheable_test.rb +0 -88
- data/test/cachetastic_unit_test.rb +0 -74
- data/test/config.rb +0 -30
- data/test/drb_adapter_test.rb +0 -14
- data/test/file_adapter_test.rb +0 -49
- data/test/memcache_adapter_test.rb +0 -18
- data/test/test_helper.rb +0 -75
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
# Used by the Mongrel Page Cache Handler gem for page caching.
|
|
2
|
-
# Future functionality may be added to this class to allow for
|
|
3
|
-
# things such as deleting a certain page/set of pages based on
|
|
4
|
-
# regex, etc...
|
|
5
|
-
class Cachetastic::Caches::PageCache < Cachetastic::Caches::Base
|
|
6
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# This class caches adapter objects for each cache in the system.
|
|
2
|
-
class Cachetastic::Connection
|
|
3
|
-
include Singleton
|
|
4
|
-
|
|
5
|
-
attr_accessor :connections
|
|
6
|
-
|
|
7
|
-
def initialize
|
|
8
|
-
self.connections = {}
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# Takes the name of the cache, that's been methodized, and returns back the adapter object associated with the cache.
|
|
12
|
-
# If the adapter object doesn't exist or if the adapter is no longer valid (adapter.valid?) a new one is
|
|
13
|
-
# created and returned.
|
|
14
|
-
def get(name)
|
|
15
|
-
name = name.to_sym
|
|
16
|
-
conn = self.connections[name]
|
|
17
|
-
return conn if conn && conn.valid?
|
|
18
|
-
adapter = Cachetastic::Adapters::Base.configuration(name).adapter.to_s.camelcase
|
|
19
|
-
conn = "Cachetastic::Adapters::#{adapter}".constantize.new(name)
|
|
20
|
-
self.connections[name.to_sym] = conn
|
|
21
|
-
return conn
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
class ActiveRecord::Base
|
|
2
|
-
|
|
3
|
-
include Cachetastic::Cacheable
|
|
4
|
-
|
|
5
|
-
def cachetastic_key
|
|
6
|
-
self.id
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
# Returns an object from the cache for a given key.
|
|
10
|
-
# If the object returned is nil and the self_populate parameter is true
|
|
11
|
-
# then the key will be used to try and find the object in the database,
|
|
12
|
-
# set the object into the cache, and then return the object.
|
|
13
|
-
def self.get_from_cache(key, self_populate = false)
|
|
14
|
-
res = cache_class.get(key)
|
|
15
|
-
if res.nil? && self_populate
|
|
16
|
-
res = self.name.constantize.find(key)
|
|
17
|
-
unless res.nil?
|
|
18
|
-
res.cache_self
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
res
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
require 'cgi'
|
|
2
|
-
require 'cgi/session'
|
|
3
|
-
|
|
4
|
-
class CGI #:nodoc:#
|
|
5
|
-
class Session #:nodoc:#
|
|
6
|
-
# Allows Rails to use Cachetastic for it's session store.
|
|
7
|
-
# The setting below needs to happen AFTER the gem has been required, obviously!
|
|
8
|
-
# In Rails 1.2.6 this is AFTER the initializer block.
|
|
9
|
-
# ActionController::Base.session_store = :cachetastic_store
|
|
10
|
-
class CachetasticStore
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def check_id(id) #:nodoc:#
|
|
14
|
-
/[^0-9a-zA-Z]+/ =~ id.to_s ? false : true
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def initialize(session, options = {}) #:nodoc:#
|
|
18
|
-
id = session.session_id
|
|
19
|
-
unless check_id(id)
|
|
20
|
-
raise ArgumentError, "session_id '%s' is invalid" % id
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
@session_key = id
|
|
24
|
-
|
|
25
|
-
@session_data = {}
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Restore session state from the session's memcache entry.
|
|
29
|
-
#
|
|
30
|
-
# Returns the session state as a hash.
|
|
31
|
-
def restore #:nodoc:#
|
|
32
|
-
@session_data = Cachetastic::Caches::RailsSessionCache.get(@session_key) do
|
|
33
|
-
{}
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Save session state to the session's memcache entry.
|
|
38
|
-
def update #:nodoc:#
|
|
39
|
-
Cachetastic::Caches::RailsSessionCache.set(@session_key, @session_data)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Update and close the session's memcache entry.
|
|
43
|
-
def close #:nodoc:#
|
|
44
|
-
update
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Delete the session's memcache entry.
|
|
48
|
-
def delete #:nodoc:#
|
|
49
|
-
Cachetastic::Caches::RailsSessionCache.delete(@session_key)
|
|
50
|
-
@session_data = {}
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def data #:nodoc:#
|
|
54
|
-
@session_data
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module Kernel # :nodoc:
|
|
2
|
-
|
|
3
|
-
def retryable(options = {}, &block) # :nodoc:
|
|
4
|
-
opts = { :tries => 1, :on => Exception }.merge(options)
|
|
5
|
-
|
|
6
|
-
retries = opts[:tries]
|
|
7
|
-
retry_exceptions = [opts[:on]].flatten
|
|
8
|
-
|
|
9
|
-
x = %{
|
|
10
|
-
begin
|
|
11
|
-
return yield
|
|
12
|
-
rescue #{retry_exceptions.join(", ")} => e
|
|
13
|
-
retries -= 1
|
|
14
|
-
if retries > 0
|
|
15
|
-
retry
|
|
16
|
-
else
|
|
17
|
-
raise e
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
eval(x, &block)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
class Object
|
|
2
|
-
|
|
3
|
-
# Override this method in your object if you use the Cachetastic::Cacheable module.
|
|
4
|
-
def cachetastic_key
|
|
5
|
-
raise NoMethodError.new('cachetastic_key')
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
unless respond_to?(:ivar_cache)
|
|
9
|
-
def ivar_cache(var_name = nil, &block)
|
|
10
|
-
if var_name.nil?
|
|
11
|
-
call = caller[0]
|
|
12
|
-
var_name = call[(call.index('`')+1)...call.index("'")]
|
|
13
|
-
end
|
|
14
|
-
var = instance_variable_get("@#{var_name}")
|
|
15
|
-
unless var
|
|
16
|
-
return instance_variable_set("@#{var_name}", yield) if block_given?
|
|
17
|
-
end
|
|
18
|
-
instance_variable_get("@#{var_name}")
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
class String
|
|
2
|
-
|
|
3
|
-
unless ''.respond_to?(:camelcase)
|
|
4
|
-
def camelcase
|
|
5
|
-
to_s.gsub(/\/(.?)/){ "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/){ $1.upcase }
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
unless ''.respond_to?(:constantize)
|
|
10
|
-
def constantize
|
|
11
|
-
Module.instance_eval("::#{self}")
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
end
|
data/test/active_record_test.rb
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "test_helper")
|
|
2
|
-
|
|
3
|
-
class ActiveRecordTest < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
ArAlbumCache.expire_all
|
|
7
|
-
Cachetastic::Caches::Base.expire_all
|
|
8
|
-
#FileUtils.rm_f(AR_DB, :verbose => true)# if File.exists?(AR_DB)
|
|
9
|
-
begin
|
|
10
|
-
ArMigration.down
|
|
11
|
-
rescue Exception => e
|
|
12
|
-
end
|
|
13
|
-
ArMigration.up
|
|
14
|
-
a = ArAlbum.create(:title => "Abbey Road", :artist => "The Beatles")
|
|
15
|
-
ArSong.create(:title => "Come Together", :album_id => a.id)
|
|
16
|
-
ArSong.create(:title => "Something", :album_id => a.id)
|
|
17
|
-
a = ArAlbum.create(:title => "Help!", :artist => "The Beatles")
|
|
18
|
-
ArSong.create(:title => "Yesterday", :album_id => a.id)
|
|
19
|
-
ArSong.create(:title => "Dizzy Miss Lizzie", :album_id => a.id)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def teardown
|
|
23
|
-
ArMigration.down
|
|
24
|
-
#FileUtils.rm_f(AR_DB, :verbose => true)# if File.exists?(AR_DB)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_album_cache
|
|
28
|
-
assert true
|
|
29
|
-
res = ArAlbumCache.get(:recent_albums, 5)
|
|
30
|
-
assert_not_nil res
|
|
31
|
-
assert res.is_a?(Array)
|
|
32
|
-
assert_equal 5, res.size
|
|
33
|
-
res.each do |r|
|
|
34
|
-
assert r.is_a?(ArAlbum)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def test_extensions
|
|
39
|
-
album = ArAlbum.find(1)
|
|
40
|
-
# assert !Cachetastic::Cacheable.const_defined?("ArAlbumCache")
|
|
41
|
-
album.cache_self
|
|
42
|
-
# assert Cachetastic::Cacheable.const_defined?("ArAlbumCache")
|
|
43
|
-
assert_equal album, Cachetastic::Cacheable::ArAlbumCache.get(1)
|
|
44
|
-
|
|
45
|
-
song = ArSong.find(1)
|
|
46
|
-
# assert !Cachetastic::Cacheable.const_defined?("ArSongCache")
|
|
47
|
-
song.cache_self
|
|
48
|
-
# assert Cachetastic::Cacheable.const_defined?("ArSongCache")
|
|
49
|
-
assert_equal song, Cachetastic::Cacheable::ArSongCache.get(1)
|
|
50
|
-
assert_equal album, Cachetastic::Cacheable::ArAlbumCache.get(1)
|
|
51
|
-
|
|
52
|
-
song.uncache_self
|
|
53
|
-
assert_nil Cachetastic::Cacheable::ArSongCache.get(1)
|
|
54
|
-
|
|
55
|
-
ac = ArAlbum.get_from_cache(1)
|
|
56
|
-
assert_not_nil ac
|
|
57
|
-
assert_equal album, ac
|
|
58
|
-
|
|
59
|
-
ArAlbum.delete_from_cache(1)
|
|
60
|
-
ac = ArAlbum.get_from_cache(1)
|
|
61
|
-
assert_nil ac
|
|
62
|
-
|
|
63
|
-
ac = ArAlbum.set_into_cache(1, album)
|
|
64
|
-
assert_not_nil ac
|
|
65
|
-
assert_equal album, ac
|
|
66
|
-
|
|
67
|
-
ac = ArAlbum.cacher(:foobar) do
|
|
68
|
-
ArAlbum.find(2)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
assert_not_nil ac
|
|
72
|
-
assert_equal ArAlbum.find(2), ac
|
|
73
|
-
|
|
74
|
-
ac = ArAlbum.get_from_cache(:foobar)
|
|
75
|
-
assert_not_nil ac
|
|
76
|
-
assert_equal ArAlbum.find(2), ac
|
|
77
|
-
|
|
78
|
-
assert_equal [1,2,3,:yippie], ac.some_numbers([1,2,3])
|
|
79
|
-
assert_equal [1,2,3,:yippie], ArAlbum.get_from_cache(:some_numbers)
|
|
80
|
-
assert_equal [1,2,3,:yippie], ac.some_numbers([1,2,3,4,5,6])
|
|
81
|
-
|
|
82
|
-
ArAlbum.delete_from_cache(1)
|
|
83
|
-
ac = ArAlbum.get_from_cache(1)
|
|
84
|
-
assert_nil ac
|
|
85
|
-
ac = ArAlbum.get_from_cache(1, true)
|
|
86
|
-
assert_not_nil ac
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
end
|
data/test/cacheable_test.rb
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "test_helper")
|
|
2
|
-
|
|
3
|
-
class Person
|
|
4
|
-
include Cachetastic::Cacheable
|
|
5
|
-
|
|
6
|
-
attr_accessor :name
|
|
7
|
-
|
|
8
|
-
def cachetastic_key
|
|
9
|
-
self.name
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def always_the_same(x, y)
|
|
13
|
-
cacher("always_the_same") do
|
|
14
|
-
x + y
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
module Me
|
|
21
|
-
class You
|
|
22
|
-
include Cachetastic::Cacheable
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
class Unknown
|
|
27
|
-
include Cachetastic::Cacheable
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
class CacheableTest < Test::Unit::TestCase
|
|
31
|
-
|
|
32
|
-
def test_cache_classes_work_with_modules
|
|
33
|
-
assert !Cachetastic::Cacheable.const_defined?("Me_YouCache")
|
|
34
|
-
assert Me::You.cache_class == Cachetastic::Cacheable::Me_YouCache
|
|
35
|
-
assert Cachetastic::Cacheable.const_defined?("Me_YouCache")
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def test_cache_classes_are_auto_genned
|
|
39
|
-
assert !Cachetastic::Cacheable.const_defined?("PersonCache")
|
|
40
|
-
assert Person.cache_class == Cachetastic::Cacheable::PersonCache
|
|
41
|
-
assert Cachetastic::Cacheable.const_defined?("PersonCache")
|
|
42
|
-
assert !Cachetastic::Cacheable.const_defined?("UnknownCache")
|
|
43
|
-
assert Unknown.cache_class == Cachetastic::Cacheable::UnknownCache
|
|
44
|
-
assert Cachetastic::Cacheable.const_defined?("UnknownCache")
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def test_no_cachetastic_key
|
|
48
|
-
assert_raise(NoMethodError) { Unknown.new.cachetastic_key }
|
|
49
|
-
assert_raise(NoMethodError) { Unknown.new.cache_self }
|
|
50
|
-
assert_raise(NoMethodError) { Unknown.new.uncache_self }
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def test_cache_uncache_self
|
|
54
|
-
p = Person.new
|
|
55
|
-
p.name = "Mark Bates"
|
|
56
|
-
assert_nil Cachetastic::Cacheable::PersonCache.get("Mark Bates")
|
|
57
|
-
p.cache_self
|
|
58
|
-
assert_equal p, Cachetastic::Cacheable::PersonCache.get("Mark Bates")
|
|
59
|
-
p.uncache_self
|
|
60
|
-
assert_nil Cachetastic::Cacheable::PersonCache.get("Mark Bates")
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def test_cacher
|
|
64
|
-
p = Person.new
|
|
65
|
-
assert_nil Cachetastic::Cacheable::PersonCache.get("always_the_same")
|
|
66
|
-
assert_equal 4, p.always_the_same(1,3)
|
|
67
|
-
assert_equal 4, Cachetastic::Cacheable::PersonCache.get("always_the_same")
|
|
68
|
-
assert_equal 4, p.always_the_same(99,99)
|
|
69
|
-
assert_equal 4, Person.get_from_cache("always_the_same")
|
|
70
|
-
assert_nil Cachetastic::Cacheable::PersonCache.get("say_hi")
|
|
71
|
-
Person.cacher("say_hi") do
|
|
72
|
-
"hi there"
|
|
73
|
-
end
|
|
74
|
-
assert_equal "hi there", Cachetastic::Cacheable::PersonCache.get("say_hi")
|
|
75
|
-
assert_equal "hi there", Person.get_from_cache("say_hi")
|
|
76
|
-
assert_equal "hi there", Person.cacher("say_hi")
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def test_get_from_cache
|
|
80
|
-
assert_nil Person.get_from_cache("i should be nil")
|
|
81
|
-
assert_equal 86, Person.get_from_cache("maxwell smart") {86}
|
|
82
|
-
x = Person.get_from_cache("my name") do |key|
|
|
83
|
-
"Mark Bates"
|
|
84
|
-
end
|
|
85
|
-
assert_equal "Mark Bates", x
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
end
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "test_helper")
|
|
2
|
-
|
|
3
|
-
class CachetasticUnitTest < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def setup
|
|
7
|
-
Cachetastic::Caches::Base.expire_all
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_class_cannot_be_instaniate
|
|
11
|
-
assert_raise(NoMethodError) { Cachetastic::Caches::Base.new }
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def test_get
|
|
15
|
-
assert_nil Cachetastic::Caches::Base.get(:my_articles_test_get)
|
|
16
|
-
res = Cachetastic::Caches::Base.get(:my_articles_test_get) do
|
|
17
|
-
"hello mark"
|
|
18
|
-
end
|
|
19
|
-
assert_equal "hello mark", res
|
|
20
|
-
assert_nil Cachetastic::Caches::Base.get(:my_articles_test_get)
|
|
21
|
-
|
|
22
|
-
res = Cachetastic::Caches::Base.get(:my_articles_test_get) do
|
|
23
|
-
Cachetastic::Caches::Base.set(:my_articles_test_get, "hello mark")
|
|
24
|
-
end
|
|
25
|
-
assert_equal "hello mark", res
|
|
26
|
-
assert_not_nil Cachetastic::Caches::Base.get(:my_articles_test_get)
|
|
27
|
-
assert_equal "hello mark", Cachetastic::Caches::Base.get(:my_articles_test_get)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def test_set
|
|
31
|
-
assert true
|
|
32
|
-
Cachetastic::Caches::Base.set(:my_articles, [1, 2, 3], 15.minutes.from_now)
|
|
33
|
-
assert_equal [1,2,3], Cachetastic::Caches::Base.get(:my_articles)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def test_delete
|
|
37
|
-
test_set
|
|
38
|
-
Cachetastic::Caches::Base.delete(:my_articles)
|
|
39
|
-
assert_nil Cachetastic::Caches::Base.get(:my_articles)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def test_expire_all
|
|
43
|
-
a = [1,2,3,4,5,6,7,8,9,10]
|
|
44
|
-
Cachetastic::Caches::Base.set(:testing_expire_all, a)
|
|
45
|
-
assert_equal a, Cachetastic::Caches::Base.get(:testing_expire_all)
|
|
46
|
-
Cachetastic::Caches::Base.expire_all
|
|
47
|
-
assert_nil Cachetastic::Caches::Base.get(:testing_expire_all)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_local_memory_auto_expire
|
|
51
|
-
res = FooBarCache.get(:pickles)
|
|
52
|
-
assert_nil res
|
|
53
|
-
FooBarCache.set(:pickles, "are yummy")
|
|
54
|
-
res = FooBarCache.get(:pickles)
|
|
55
|
-
assert_not_nil res
|
|
56
|
-
assert_equal "are yummy", res
|
|
57
|
-
sleep(4)
|
|
58
|
-
res = FooBarCache.get(:pickles)
|
|
59
|
-
assert_nil res
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def test_local_memory_delete
|
|
63
|
-
res = FooBarCache.get(:pickles)
|
|
64
|
-
assert_nil res
|
|
65
|
-
FooBarCache.set(:pickles, "are yummy")
|
|
66
|
-
res = FooBarCache.get(:pickles)
|
|
67
|
-
assert_not_nil res
|
|
68
|
-
assert_equal "are yummy", res
|
|
69
|
-
FooBarCache.delete(:pickles)
|
|
70
|
-
res = FooBarCache.get(:pickles)
|
|
71
|
-
assert_nil res
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
end
|