cache 0.2.6 → 0.2.7
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/cache.gemspec +1 -2
- data/lib/cache.rb +3 -4
- data/lib/cache/storage.rb +4 -4
- data/lib/cache/version.rb +1 -1
- data/test/profile/benchmark.rb +30 -10
- metadata +76 -25
data/cache.gemspec
CHANGED
@@ -26,8 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_development_dependency 'redis'
|
27
27
|
s.add_development_dependency 'redis-namespace'
|
28
28
|
s.add_development_dependency 'dalli'
|
29
|
-
|
30
|
-
s.add_development_dependency 'memcached', '<=1.2.6'
|
29
|
+
s.add_development_dependency 'memcached'
|
31
30
|
s.add_development_dependency 'memcache-client'
|
32
31
|
s.add_development_dependency 'rake'
|
33
32
|
end
|
data/lib/cache.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
require 'cache/
|
2
|
-
|
3
|
-
autoload :Config, 'cache/config'
|
4
|
-
autoload :Storage, 'cache/storage'
|
1
|
+
require 'cache/config'
|
2
|
+
require 'cache/storage'
|
5
3
|
|
4
|
+
class Cache
|
6
5
|
# Create a new Cache instance by wrapping a client of your choice.
|
7
6
|
#
|
8
7
|
# Defaults to an in-process memory store.
|
data/lib/cache/storage.rb
CHANGED
@@ -19,7 +19,7 @@ class Cache
|
|
19
19
|
if cached_v = bare.get(k) and cached_v.is_a?(::String)
|
20
20
|
::Marshal.load cached_v
|
21
21
|
end
|
22
|
-
elsif active_support_store?
|
22
|
+
elsif active_support_store? or dalli_store?
|
23
23
|
bare.read k
|
24
24
|
else
|
25
25
|
raise "Don't know how to GET with #{bare.inspect}"
|
@@ -32,7 +32,7 @@ class Cache
|
|
32
32
|
bare.get ks
|
33
33
|
elsif memcached_rails? or dalli? or mem_cache?
|
34
34
|
bare.get_multi ks
|
35
|
-
elsif active_support_store?
|
35
|
+
elsif active_support_store? or dalli_store?
|
36
36
|
bare.read_multi *ks
|
37
37
|
else
|
38
38
|
ks.inject({}) do |memo, k|
|
@@ -52,7 +52,7 @@ class Cache
|
|
52
52
|
else
|
53
53
|
bare.setex k, ttl, ::Marshal.dump(v)
|
54
54
|
end
|
55
|
-
elsif active_support_store?
|
55
|
+
elsif active_support_store? or dalli_store?
|
56
56
|
if ttl == 0
|
57
57
|
bare.write k, v # never expire
|
58
58
|
else
|
@@ -69,7 +69,7 @@ class Cache
|
|
69
69
|
begin; bare.delete(k); rescue ::Memcached::NotFound; nil; end
|
70
70
|
elsif redis?
|
71
71
|
bare.del k
|
72
|
-
elsif dalli? or memcached_rails? or mem_cache? or active_support_store?
|
72
|
+
elsif dalli? or memcached_rails? or mem_cache? or active_support_store? or dalli_store?
|
73
73
|
bare.delete k
|
74
74
|
else
|
75
75
|
raise "Don't know how to DELETE with #{bare.inspect}"
|
data/lib/cache/version.rb
CHANGED
data/test/profile/benchmark.rb
CHANGED
@@ -15,7 +15,7 @@ puts `env | egrep '^RUBY'`
|
|
15
15
|
puts "Ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
|
16
16
|
|
17
17
|
[ ["memcached", "memcached"],
|
18
|
-
["remix-stash", "remix/stash"],
|
18
|
+
# ["remix-stash", "remix/stash"],
|
19
19
|
# ["astro-remcached", "remcached"], # Clobbers the "Memcached" constant
|
20
20
|
["memcache-client", "memcache"],
|
21
21
|
["cache", "cache"],
|
@@ -26,12 +26,10 @@ puts "Ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
|
|
26
26
|
puts "Loaded #{gem_name} #{Gem.loaded_specs[gem_name].version.to_s rescue nil}"
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
@@clusters = {:default => Remix::Stash::Cluster.new(['127.0.0.1:43042', '127.0.0.1:43043'])}
|
34
|
-
end
|
29
|
+
# class Remix::Stash
|
30
|
+
# # Remix::Stash API doesn't let you set servers
|
31
|
+
# @@clusters = {:default => Remix::Stash::Cluster.new(['127.0.0.1:43042', '127.0.0.1:43043'])}
|
32
|
+
# end
|
35
33
|
|
36
34
|
class Dalli::ClientCompat < Dalli::Client
|
37
35
|
def set(*args)
|
@@ -102,8 +100,30 @@ class Bench
|
|
102
100
|
private
|
103
101
|
|
104
102
|
def reset_servers
|
105
|
-
|
106
|
-
|
103
|
+
# Kill memcached
|
104
|
+
system("killall -9 memcached")
|
105
|
+
|
106
|
+
# Start memcached
|
107
|
+
verbosity = (ENV['DEBUG'] ? "-vv" : "")
|
108
|
+
log = "/tmp/memcached.log"
|
109
|
+
memcached = ENV['MEMCACHED_COMMAND'] || 'memcached'
|
110
|
+
system ">#{log}"
|
111
|
+
|
112
|
+
# TCP memcached
|
113
|
+
(43042..43046).each do |port|
|
114
|
+
cmd = "#{memcached} #{verbosity} -U 0 -p #{port} >> #{log} 2>&1 &"
|
115
|
+
raise "'#{cmd}' failed to start" unless system(cmd)
|
116
|
+
end
|
117
|
+
# UDP memcached
|
118
|
+
(43052..43053).each do |port|
|
119
|
+
cmd = "#{memcached} #{verbosity} -U #{port} -p 0 >> #{log} 2>&1 &"
|
120
|
+
raise "'#{cmd}' failed to start" unless system(cmd)
|
121
|
+
end
|
122
|
+
# Domain socket memcached
|
123
|
+
(0..1).each do |i|
|
124
|
+
cmd = "#{memcached} -M -s #{UNIX_SOCKET_NAME}#{i} #{verbosity} >> #{log} 2>&1 &"
|
125
|
+
raise "'#{cmd}' failed to start" unless system(cmd)
|
126
|
+
end
|
107
127
|
end
|
108
128
|
|
109
129
|
def reset_clients
|
@@ -126,7 +146,7 @@ class Bench
|
|
126
146
|
['127.0.0.1:43042', '127.0.0.1:43043'],
|
127
147
|
:no_block => true, :buffer_requests => true, :namespace => "namespace", :binary_protocol => true),
|
128
148
|
"mclient:ascii" => MemCache.new(['127.0.0.1:43042', '127.0.0.1:43043']),
|
129
|
-
"stash:bin" => Remix::Stash.new(:root),
|
149
|
+
# "stash:bin" => Remix::Stash.new(:root),
|
130
150
|
"dalli:bin" => Dalli::ClientCompat.new(['127.0.0.1:43042', '127.0.0.1:43043'], :marshal => false, :threadsafe => false)}
|
131
151
|
end
|
132
152
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2012-04-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: 2.3.11
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 2.3.11
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: i18n
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: '0'
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: yard
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: '0'
|
45
55
|
type: :development
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: test-unit
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :development
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: redis
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :development
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: redis-namespace
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,10 +102,15 @@ dependencies:
|
|
77
102
|
version: '0'
|
78
103
|
type: :development
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
- !ruby/object:Gem::Dependency
|
82
112
|
name: dalli
|
83
|
-
requirement:
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
84
114
|
none: false
|
85
115
|
requirements:
|
86
116
|
- - ! '>='
|
@@ -88,21 +118,31 @@ dependencies:
|
|
88
118
|
version: '0'
|
89
119
|
type: :development
|
90
120
|
prerelease: false
|
91
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
92
127
|
- !ruby/object:Gem::Dependency
|
93
128
|
name: memcached
|
94
|
-
requirement:
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
95
130
|
none: false
|
96
131
|
requirements:
|
97
|
-
- -
|
132
|
+
- - ! '>='
|
98
133
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
134
|
+
version: '0'
|
100
135
|
type: :development
|
101
136
|
prerelease: false
|
102
|
-
version_requirements:
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
103
143
|
- !ruby/object:Gem::Dependency
|
104
144
|
name: memcache-client
|
105
|
-
requirement:
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
106
146
|
none: false
|
107
147
|
requirements:
|
108
148
|
- - ! '>='
|
@@ -110,10 +150,15 @@ dependencies:
|
|
110
150
|
version: '0'
|
111
151
|
type: :development
|
112
152
|
prerelease: false
|
113
|
-
version_requirements:
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
114
159
|
- !ruby/object:Gem::Dependency
|
115
160
|
name: rake
|
116
|
-
requirement:
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
117
162
|
none: false
|
118
163
|
requirements:
|
119
164
|
- - ! '>='
|
@@ -121,7 +166,12 @@ dependencies:
|
|
121
166
|
version: '0'
|
122
167
|
type: :development
|
123
168
|
prerelease: false
|
124
|
-
version_requirements:
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
125
175
|
description: Wraps memcached, redis(-namespace), memcache-client, dalli and handles
|
126
176
|
their weirdnesses, including forking
|
127
177
|
email:
|
@@ -177,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
227
|
version: '0'
|
178
228
|
requirements: []
|
179
229
|
rubyforge_project: cache
|
180
|
-
rubygems_version: 1.8.
|
230
|
+
rubygems_version: 1.8.21
|
181
231
|
signing_key:
|
182
232
|
specification_version: 3
|
183
233
|
summary: A unified cache handling interface inspired by libraries like ActiveSupport::Cache::Store,
|
@@ -195,3 +245,4 @@ test_files:
|
|
195
245
|
- test/test_memcached_storage.rb
|
196
246
|
- test/test_rails_cache_storage.rb
|
197
247
|
- test/test_redis_storage.rb
|
248
|
+
has_rdoc:
|