memcached 1.3.7 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/BENCHMARKS +115 -121
- data/CHANGELOG +5 -1
- data/README.rdoc +2 -1
- data/Rakefile +3 -2
- data/TODO +2 -2
- data/ext/extconf.rb +3 -2
- data/lib/memcached/rails.rb +35 -3
- data/memcached.gemspec +18 -18
- data/test/unit/memcached_experimental_test.rb +30 -30
- data/test/unit/rails_test.rb +63 -0
- metadata +5 -5
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/BENCHMARKS
CHANGED
@@ -7,128 +7,122 @@ You can easily run your own benchmarks, as long as you have memcached itself on
|
|
7
7
|
|
8
8
|
== x86-64 OS X
|
9
9
|
|
10
|
-
These benchmarks were run on a 64-bit OS X machine, with memcached 1.4.5:
|
11
|
-
|
12
|
-
Darwin
|
13
|
-
|
14
|
-
ruby
|
15
|
-
Ruby
|
16
|
-
|
17
|
-
RUBY_HEAP_MIN_SLOTS=500000
|
18
|
-
RUBY_HEAP_SLOTS_INCREMENT=250000
|
19
|
-
RUBY_GC_MALLOC_LIMIT=50000000
|
20
|
-
RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
|
21
|
-
RUBY_VERSION=ree-1.8.7-2010.02
|
22
|
-
Ruby 1.8.7p253
|
23
|
-
Loaded memcached 1.1.1
|
10
|
+
These benchmarks were run on a 64-bit OS X machine, with memcached 1.4.5:
|
11
|
+
|
12
|
+
Darwin winter.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:47:41 PST 2012; root:xnu-1699.24.23~1/RELEASE_X86_64 x86_64
|
13
|
+
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.1]
|
14
|
+
RUBY_VERSION=ruby-1.9.2-p290
|
15
|
+
Ruby 1.9.2p290
|
16
|
+
Loaded memcached 1.4.0
|
24
17
|
Loaded remix-stash 1.1.3
|
25
18
|
Loaded memcache-client 1.8.5
|
26
|
-
Loaded kgio 2.
|
27
|
-
Loaded dalli 1.
|
28
|
-
PID is
|
29
|
-
Loops is
|
19
|
+
Loaded kgio 2.6.0
|
20
|
+
Loaded dalli 1.1.5
|
21
|
+
PID is 7161
|
22
|
+
Loops is 50000
|
30
23
|
Stack depth is 0
|
31
|
-
Small value size is:
|
32
|
-
Large value size is:
|
33
|
-
|
24
|
+
Small value size is: 19 bytes
|
25
|
+
Large value size is: 4189 bytes
|
34
26
|
user system total real
|
35
|
-
set:
|
36
|
-
set: libm:ascii
|
37
|
-
set: libm:ascii:
|
38
|
-
set: libm:
|
39
|
-
set: libm:bin
|
40
|
-
set:
|
41
|
-
set: mclient:ascii
|
42
|
-
set: stash:bin
|
43
|
-
|
44
|
-
get:
|
45
|
-
get: libm:ascii
|
46
|
-
get: libm:ascii:
|
47
|
-
get: libm:
|
48
|
-
get: libm:bin
|
49
|
-
get:
|
50
|
-
get: mclient:ascii
|
51
|
-
get: stash:bin 2.310000
|
52
|
-
|
53
|
-
get-multi:
|
54
|
-
get-multi: libm:ascii
|
55
|
-
get-multi: libm:ascii:
|
56
|
-
get-multi: libm:
|
57
|
-
get-multi: libm:bin
|
58
|
-
get-multi:
|
59
|
-
|
60
|
-
append:
|
61
|
-
append: libm:ascii
|
62
|
-
append: libm:ascii:
|
63
|
-
append: libm:
|
64
|
-
append: libm:bin
|
65
|
-
append:
|
66
|
-
append: mclient:ascii
|
67
|
-
|
68
|
-
prepend:
|
69
|
-
prepend: libm:ascii
|
70
|
-
prepend: libm:ascii:
|
71
|
-
prepend: libm:
|
72
|
-
prepend: libm:bin
|
73
|
-
prepend:
|
74
|
-
prepend: mclient:ascii
|
75
|
-
|
76
|
-
delete:
|
77
|
-
delete: libm:ascii
|
78
|
-
delete: libm:ascii:
|
79
|
-
delete: libm:
|
80
|
-
delete: libm:bin
|
81
|
-
delete:
|
82
|
-
delete: mclient:ascii
|
83
|
-
|
84
|
-
get-missing:
|
85
|
-
get-missing: libm:ascii
|
86
|
-
get-missing: libm:ascii:
|
87
|
-
get-missing: libm:
|
88
|
-
get-missing: libm:bin
|
89
|
-
get-missing:
|
90
|
-
get-missing: mclient:ascii
|
91
|
-
|
92
|
-
append-missing:
|
93
|
-
append-missing: libm:ascii
|
94
|
-
append-missing: libm:ascii:
|
95
|
-
append-missing: libm:
|
96
|
-
append-missing:
|
97
|
-
append-missing:
|
98
|
-
|
99
|
-
|
100
|
-
prepend-missing:
|
101
|
-
prepend-missing: libm:ascii
|
102
|
-
prepend-missing: libm:
|
103
|
-
prepend-missing:
|
104
|
-
prepend-missing:
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
set-large:
|
109
|
-
set-large: libm:
|
110
|
-
set-large: libm:
|
111
|
-
set-large:
|
112
|
-
set-large:
|
113
|
-
set-large:
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
get-large:
|
118
|
-
get-large: libm:
|
119
|
-
get-large: libm:
|
120
|
-
get-large:
|
121
|
-
get-large:
|
122
|
-
get-large:
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
hash:
|
127
|
-
hash:
|
128
|
-
hash:
|
129
|
-
hash:
|
130
|
-
hash:
|
131
|
-
hash:
|
132
|
-
hash:
|
133
|
-
hash:
|
134
|
-
hash:
|
27
|
+
set: dalli:bin 6.230000 2.860000 9.090000 ( 13.771901)
|
28
|
+
set: libm:ascii 0.900000 1.600000 2.500000 ( 6.201596)
|
29
|
+
set: libm:ascii:pipeline 0.380000 0.010000 0.390000 ( 0.399863)
|
30
|
+
set: libm:ascii:udp 0.540000 0.810000 1.350000 ( 3.033980)
|
31
|
+
set: libm:bin 0.660000 1.550000 2.210000 ( 5.829103)
|
32
|
+
set: libm:bin:buffer 0.310000 0.560000 0.870000 ( 1.335899)
|
33
|
+
set: mclient:ascii 13.760000 3.640000 17.400000 ( 17.519859)
|
34
|
+
set: stash:bin 4.350000 2.260000 6.610000 ( 10.901810)
|
35
|
+
|
36
|
+
get: dalli:bin 6.370000 3.040000 9.410000 ( 13.762127)
|
37
|
+
get: libm:ascii 1.130000 1.710000 2.840000 ( 6.472671)
|
38
|
+
get: libm:ascii:pipeline 1.350000 2.480000 3.830000 ( 8.459317)
|
39
|
+
get: libm:ascii:udp 0.770000 0.910000 1.680000 ( 3.084506)
|
40
|
+
get: libm:bin 1.450000 2.910000 4.360000 ( 9.041859)
|
41
|
+
get: libm:bin:buffer 1.390000 3.400000 4.790000 ( 9.160760)
|
42
|
+
get: mclient:ascii 15.390000 3.890000 19.280000 ( 19.325698)
|
43
|
+
get: stash:bin 3.630000 2.310000 5.940000 ( 9.561887)
|
44
|
+
|
45
|
+
get-multi: dalli:bin 11.220000 4.720000 15.940000 ( 15.977336)
|
46
|
+
get-multi: libm:ascii 1.150000 1.190000 2.340000 ( 4.063418)
|
47
|
+
get-multi: libm:ascii:pipeline 1.160000 1.190000 2.350000 ( 4.063346)
|
48
|
+
get-multi: libm:ascii:udp 1.200000 1.110000 2.310000 ( 2.746055)
|
49
|
+
get-multi: libm:bin 1.520000 2.320000 3.840000 ( 5.053102)
|
50
|
+
get-multi: libm:bin:buffer 1.560000 2.350000 3.910000 ( 5.154312)
|
51
|
+
|
52
|
+
append: dalli:bin 5.470000 2.930000 8.400000 ( 24.011438)
|
53
|
+
append: libm:ascii 1.290000 1.790000 3.080000 ( 17.774130)
|
54
|
+
append: libm:ascii:pipeline 0.450000 0.040000 0.490000 ( 6.633257)
|
55
|
+
append: libm:ascii:udp 1.070000 0.970000 2.040000 ( 14.307639)
|
56
|
+
append: libm:bin 1.010000 1.740000 2.750000 ( 17.286027)
|
57
|
+
append: libm:bin:buffer 1.570000 3.060000 4.630000 ( 11.351744)
|
58
|
+
append: mclient:ascii 13.860000 4.610000 18.470000 ( 28.063347)
|
59
|
+
|
60
|
+
prepend: dalli:bin 5.480000 2.920000 8.400000 ( 24.141383)
|
61
|
+
prepend: libm:ascii 1.290000 1.800000 3.090000 ( 17.990164)
|
62
|
+
prepend: libm:ascii:pipeline 0.460000 0.050000 0.510000 ( 6.913219)
|
63
|
+
prepend: libm:ascii:udp 1.080000 0.970000 2.050000 ( 14.498750)
|
64
|
+
prepend: libm:bin 1.010000 1.750000 2.760000 ( 17.490186)
|
65
|
+
prepend: libm:bin:buffer 1.590000 3.030000 4.620000 ( 11.528854)
|
66
|
+
prepend: mclient:ascii 13.820000 4.590000 18.410000 ( 27.996415)
|
67
|
+
|
68
|
+
delete: dalli:bin 5.190000 2.860000 8.050000 ( 12.158696)
|
69
|
+
delete: libm:ascii 1.730000 1.760000 3.490000 ( 6.891763)
|
70
|
+
delete: libm:ascii:pipeline 0.270000 0.010000 0.280000 ( 0.286750)
|
71
|
+
delete: libm:ascii:udp 1.280000 0.960000 2.240000 ( 3.521770)
|
72
|
+
delete: libm:bin 1.670000 1.730000 3.400000 ( 6.670207)
|
73
|
+
delete: libm:bin:buffer 1.990000 1.420000 3.410000 ( 3.408682)
|
74
|
+
delete: mclient:ascii 12.300000 3.440000 15.740000 ( 15.004959)
|
75
|
+
|
76
|
+
get-missing: dalli:bin 5.190000 2.900000 8.090000 ( 12.288468)
|
77
|
+
get-missing: libm:ascii 1.890000 1.930000 3.820000 ( 7.300238)
|
78
|
+
get-missing: libm:ascii:pipeline 2.000000 2.400000 4.400000 ( 7.861120)
|
79
|
+
get-missing: libm:ascii:udp 1.420000 1.000000 2.420000 ( 3.684960)
|
80
|
+
get-missing: libm:bin 2.450000 2.880000 5.330000 ( 9.904413)
|
81
|
+
get-missing: libm:bin:buffer 2.590000 3.600000 6.190000 ( 10.558657)
|
82
|
+
get-missing: mclient:ascii 12.610000 3.520000 16.130000 ( 16.112399)
|
83
|
+
|
84
|
+
append-missing: dalli:bin 5.440000 2.930000 8.370000 ( 13.119090)
|
85
|
+
append-missing: libm:ascii 2.060000 2.060000 4.120000 ( 8.168211)
|
86
|
+
append-missing: libm:ascii:pipeline 0.410000 0.020000 0.430000 ( 0.423779)
|
87
|
+
append-missing: libm:ascii:udp 1.470000 0.980000 2.450000 ( 4.093117)
|
88
|
+
append-missing: libm:bin 1.800000 1.880000 3.680000 ( 7.384185)
|
89
|
+
append-missing: libm:bin:buffer 1.920000 2.500000 4.420000 ( 8.242885)
|
90
|
+
append-missing: mclient:ascii 12.780000 3.560000 16.340000 ( 16.303513)
|
91
|
+
|
92
|
+
prepend-missing: dalli:bin 5.440000 2.940000 8.380000 ( 13.143816)
|
93
|
+
prepend-missing: libm:ascii 2.060000 2.050000 4.110000 ( 8.207103)
|
94
|
+
prepend-missing: libm:ascii:pipeline 0.390000 0.010000 0.400000 ( 0.405324)
|
95
|
+
prepend-missing: libm:ascii:udp 1.480000 0.980000 2.460000 ( 4.100100)
|
96
|
+
prepend-missing: libm:bin 1.820000 1.910000 3.730000 ( 7.485082)
|
97
|
+
prepend-missing: libm:bin:buffer 1.930000 2.490000 4.420000 ( 8.220931)
|
98
|
+
prepend-missing: mclient:ascii 12.750000 3.570000 16.320000 ( 16.327426)
|
99
|
+
|
100
|
+
set-large: dalli:bin 8.210000 4.760000 12.970000 ( 20.323687)
|
101
|
+
set-large: libm:ascii 0.980000 1.690000 2.670000 ( 6.540981)
|
102
|
+
set-large: libm:ascii:pipeline 0.750000 0.620000 1.370000 ( 1.374806)
|
103
|
+
set-large: libm:ascii:udp 0.590000 0.880000 1.470000 ( 3.345455)
|
104
|
+
set-large: libm:bin 0.720000 1.620000 2.340000 ( 6.085282)
|
105
|
+
set-large: libm:bin:buffer 0.540000 1.000000 1.540000 ( 2.073624)
|
106
|
+
set-large: mclient:ascii 15.440000 5.050000 20.490000 ( 21.033437)
|
107
|
+
set-large: stash:bin 6.990000 2.970000 9.960000 ( 14.580058)
|
108
|
+
|
109
|
+
get-large: dalli:bin 6.430000 3.050000 9.480000 ( 13.863885)
|
110
|
+
get-large: libm:ascii 1.280000 1.910000 3.190000 ( 7.413390)
|
111
|
+
get-large: libm:ascii:pipeline 1.510000 2.690000 4.200000 ( 9.178352)
|
112
|
+
get-large: libm:ascii:udp 0.940000 1.050000 1.990000 ( 3.705017)
|
113
|
+
get-large: libm:bin 1.580000 3.140000 4.720000 ( 10.028901)
|
114
|
+
get-large: libm:bin:buffer 1.550000 3.740000 5.290000 ( 10.237274)
|
115
|
+
get-large: mclient:ascii 15.090000 3.590000 18.680000 ( 18.686119)
|
116
|
+
get-large: stash:bin 4.810000 3.010000 7.820000 ( 13.311248)
|
117
|
+
|
118
|
+
hash:default 0.540000 0.010000 0.550000 ( 0.537555)
|
119
|
+
hash:md5 0.910000 0.000000 0.910000 ( 0.914356)
|
120
|
+
hash:crc 0.620000 0.000000 0.620000 ( 0.624606)
|
121
|
+
hash:fnv1_64 0.420000 0.000000 0.420000 ( 0.421316)
|
122
|
+
hash:fnv1a_64 0.380000 0.000000 0.380000 ( 0.376717)
|
123
|
+
hash:fnv1_32 0.370000 0.000000 0.370000 ( 0.368479)
|
124
|
+
hash:fnv1a_32 0.350000 0.000000 0.350000 ( 0.353779)
|
125
|
+
hash:hsieh 0.160000 0.000000 0.160000 ( 0.161812)
|
126
|
+
hash:murmur 0.220000 0.000000 0.220000 ( 0.220061)
|
127
|
+
hash:jenkins 0.270000 0.000000 0.270000 ( 0.264617)
|
128
|
+
hash:none 0.160000 0.000000 0.160000 ( 0.165394)
|
data/CHANGELOG
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
+
v1.4.1. Fix Memcached::Rails#servers bug (tomhughes).
|
2
|
+
|
3
|
+
v1.4.0. Update Memcached::Rails compatibility wrapper to play along with Rails 3.2, including support for the horrendous ActiveSupport::Duration (tomhughes).
|
4
|
+
|
1
5
|
v1.3.7. Rebuild gem to work around timestamp issue in Gemspec on Rubygems 1.7 (tarcieri).
|
2
6
|
|
3
|
-
v1.3.6. Stop autoconf from running (eric). Raise generic Memcached::Error (instead of nil) on unexpected return code (gcampbell). Retry on Memcached::ServerEnd (ChristopherThorpe)
|
7
|
+
v1.3.6. Stop autoconf from running (eric). Raise generic Memcached::Error (instead of nil) on unexpected return code (gcampbell). Retry on Memcached::ServerEnd (ChristopherThorpe).
|
4
8
|
|
5
9
|
v1.3.5. Fix build again (eric).
|
6
10
|
|
data/README.rdoc
CHANGED
@@ -10,6 +10,7 @@ Copyright 2009-2011 Cloudburst, LLC. Licensed under the AFL 3. See the included
|
|
10
10
|
|
11
11
|
* clean API
|
12
12
|
* robust access to all memcached features
|
13
|
+
* SASL support for the binary protocol
|
13
14
|
* multiple hashing modes, including consistent hashing
|
14
15
|
* ludicrous speed, including optional pipelined IO with no_reply
|
15
16
|
|
@@ -107,7 +108,7 @@ There is a compatibility wrapper for legacy applications called Memcached::Rails
|
|
107
108
|
|
108
109
|
== Reporting problems
|
109
110
|
|
110
|
-
The support forum is here[http://github.com/
|
111
|
+
The support forum is here[http://github.com/evan/memcached/issues].
|
111
112
|
|
112
113
|
Patches and contributions are very welcome. Please note that contributors are required to assign copyright for their additions to Cloudburst, LLC.
|
113
114
|
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@ require 'echoe'
|
|
3
3
|
|
4
4
|
Echoe.new("memcached") do |p|
|
5
5
|
p.author = "Evan Weaver"
|
6
|
-
p.project = "
|
6
|
+
p.project = "evan"
|
7
7
|
p.summary = "An interface to the libmemcached C client."
|
8
8
|
p.rdoc_pattern = /README|TODO|LICENSE|CHANGELOG|BENCH|COMPAT|exceptions|experimental.rb|behaviors|rails.rb|memcached.rb/
|
9
9
|
p.rdoc_options = %w[--line-numbers --inline-source --title Memcached --main README.rdoc --exclude=ext/bin --exclude=ext/libmemcached-.*/(clients|tests)]
|
@@ -13,6 +13,7 @@ Echoe.new("memcached") do |p|
|
|
13
13
|
"ext/lib",
|
14
14
|
"ext/share",
|
15
15
|
"ext/**/Makefile",
|
16
|
+
"ext/Makefile.in",
|
16
17
|
"ext/libmemcached-*/autom4te.cache",
|
17
18
|
"ext/libmemcached-*/clients/memcat",
|
18
19
|
"ext/libmemcached-*/clients/memcp",
|
@@ -72,7 +73,7 @@ task :valgrind do
|
|
72
73
|
end
|
73
74
|
|
74
75
|
def with_vms(cmd)
|
75
|
-
["ree", "1.9.2", "rbx"].each do |vm| #, "jruby-head"
|
76
|
+
["ree-1.8.7-2011.03", "1.9.2", "rbx"].each do |vm| #, "jruby-head"
|
76
77
|
if !system("bash -c 'cd && source .bash_profile && rvm use #{vm} && cd - && rake clean >> /dev/null && rake compile >> /dev/null && rake #{cmd}'")
|
77
78
|
puts "#{vm} #{cmd} failed"
|
78
79
|
exit(1)
|
data/TODO
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
|
2
|
+
* Promote touch support to toplevel and add ASCII protocol touching
|
3
|
+
* Remove SWIG and modify libmemcached to accept and return Ruby objects directly
|
2
4
|
* Verify that DNS lookups are getting cached
|
3
|
-
* Check for memory leaks in Valgrind after free callback change
|
4
|
-
* Re-run benchmarks
|
data/ext/extconf.rb
CHANGED
@@ -47,9 +47,8 @@ def check_libmemcached
|
|
47
47
|
$DEFLIBPATH = [] unless SOLARIS_32
|
48
48
|
|
49
49
|
Dir.chdir(HERE) do
|
50
|
-
run("touch -r #{BUNDLE_PATH}/m4/visibility.m4 #{BUNDLE_PATH}/configure.ac #{BUNDLE_PATH}/m4/pandora_have_sasl.m4 #{BUNDLE_PATH}/aclocal.m4", "Touching aclocal.m4 in libmemcached.")
|
51
|
-
|
52
50
|
Dir.chdir(BUNDLE_PATH) do
|
51
|
+
run("find . | xargs touch", "Touching all files so autoconf doesn't run.")
|
53
52
|
run("env CFLAGS='-fPIC #{LIBM_CFLAGS}' LDFLAGS='-fPIC #{LIBM_LDFLAGS}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$CC} #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
|
54
53
|
end
|
55
54
|
|
@@ -84,3 +83,5 @@ end
|
|
84
83
|
|
85
84
|
$CFLAGS << " -Os"
|
86
85
|
create_makefile 'rlibmemcached'
|
86
|
+
run("mv Makefile Makefile.in", "Copy Makefile")
|
87
|
+
run("sed 's/-I.opt.local.include//' Makefile.in > Makefile", "Remove MacPorts from the include path")
|
data/lib/memcached/rails.rb
CHANGED
@@ -4,7 +4,7 @@ class Memcached
|
|
4
4
|
eval("alias :'#{method_name}_orig' :'#{method_name}'")
|
5
5
|
end
|
6
6
|
|
7
|
-
# A legacy compatibility wrapper for the Memcached class. It has basic compatibility with the <b>memcache-client</b> API.
|
7
|
+
# A legacy compatibility wrapper for the Memcached class. It has basic compatibility with the <b>memcache-client</b> API and Rails 3.2. (Note that ActiveSupport::Duration objects are supported, but not recommended, as ttl parameters. Using Fixnum ttls, such as provided by time_constants.gem, is much faster.)
|
8
8
|
class Rails < ::Memcached
|
9
9
|
|
10
10
|
DEFAULTS = {
|
@@ -23,7 +23,9 @@ class Memcached
|
|
23
23
|
args.any? ? args.unshift : opts.delete(:servers)
|
24
24
|
).flatten.compact
|
25
25
|
|
26
|
-
opts[:prefix_key]
|
26
|
+
opts[:prefix_key] = opts[:namespace] if opts[:namespace]
|
27
|
+
opts[:prefix_delimiter] = opts[:namespace_separator] if opts[:namespace_separator]
|
28
|
+
|
27
29
|
@logger = opts[:logger]
|
28
30
|
@string_return_types = opts[:string_return_types]
|
29
31
|
|
@@ -35,6 +37,11 @@ class Memcached
|
|
35
37
|
@logger = logger
|
36
38
|
end
|
37
39
|
|
40
|
+
# Check if there are any servers defined?
|
41
|
+
def active?
|
42
|
+
servers.any?
|
43
|
+
end
|
44
|
+
|
38
45
|
# Wraps Memcached#get so that it doesn't raise. This has the side-effect of preventing you from
|
39
46
|
# storing <tt>nil</tt> values.
|
40
47
|
def get(key, raw=false)
|
@@ -60,6 +67,9 @@ class Memcached
|
|
60
67
|
def cas(key, ttl=@default_ttl, raw=false, &block)
|
61
68
|
super(key, ttl, !raw, &block)
|
62
69
|
true
|
70
|
+
rescue TypeError => e
|
71
|
+
# Maybe we got an ActiveSupport::Duration
|
72
|
+
ttl = ttl.value and retry rescue raise e
|
63
73
|
rescue NotFound, ConnectionDataExists
|
64
74
|
false
|
65
75
|
end
|
@@ -75,6 +85,9 @@ class Memcached
|
|
75
85
|
def set(key, value, ttl=@default_ttl, raw=false)
|
76
86
|
super(key, value, ttl, !raw)
|
77
87
|
true
|
88
|
+
rescue TypeError => e
|
89
|
+
# Maybe we got an ActiveSupport::Duration
|
90
|
+
ttl = ttl.value and retry rescue raise e
|
78
91
|
rescue NotStored
|
79
92
|
false
|
80
93
|
end
|
@@ -88,8 +101,10 @@ class Memcached
|
|
88
101
|
# Wraps Memcached#add so that it doesn't raise.
|
89
102
|
def add(key, value, ttl=@default_ttl, raw=false)
|
90
103
|
super(key, value, ttl, !raw)
|
91
|
-
# This causes me pain
|
92
104
|
@string_return_types ? "STORED\r\n" : true
|
105
|
+
rescue TypeError => e
|
106
|
+
# Maybe we got an ActiveSupport::Duration
|
107
|
+
ttl = ttl.value and retry rescue raise e
|
93
108
|
rescue NotStored
|
94
109
|
@string_return_types? "NOT STORED\r\n" : false
|
95
110
|
end
|
@@ -129,5 +144,22 @@ class Memcached
|
|
129
144
|
alias :"[]" :get
|
130
145
|
alias :"[]=" :set
|
131
146
|
|
147
|
+
# Return an array of server objects.
|
148
|
+
def servers
|
149
|
+
server_structs.each do |server|
|
150
|
+
def server.alive?
|
151
|
+
next_retry <= Time.now
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
# Wraps Memcached#set_servers to convert server objects to strings.
|
157
|
+
def set_servers(servers)
|
158
|
+
servers = Array(servers)
|
159
|
+
servers.map! do |server|
|
160
|
+
server.is_a?(String) ? server : inspect_server(server)
|
161
|
+
end
|
162
|
+
super
|
163
|
+
end
|
132
164
|
end
|
133
165
|
end
|
data/memcached.gemspec
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
|
-
s.name =
|
5
|
-
s.version = "1.
|
4
|
+
s.name = %q{memcached}
|
5
|
+
s.version = "1.4.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = [
|
9
|
-
s.cert_chain = [
|
10
|
-
s.date =
|
11
|
-
s.description =
|
12
|
-
s.email =
|
13
|
-
s.extensions = [
|
14
|
-
s.extra_rdoc_files = [
|
15
|
-
s.files = ["BENCHMARKS", "CHANGELOG", "LICENSE", "Manifest", "README.rdoc", "Rakefile", "TODO", "ext/extconf-make.rb", "ext/extconf.rb", "ext/libmemcached-0.32/AUTHORS", "ext/libmemcached-0.32/COPYING", "ext/libmemcached-0.32/ChangeLog", "ext/libmemcached-0.32/INSTALL", "ext/libmemcached-0.32/Makefile.am", "ext/libmemcached-0.32/Makefile.in", "ext/libmemcached-0.32/NEWS", "ext/libmemcached-0.32/README", "ext/libmemcached-0.32/THANKS", "ext/libmemcached-0.32/TODO", "ext/libmemcached-0.32/aclocal.m4", "ext/libmemcached-0.32/clients/Makefile.am", "ext/libmemcached-0.32/clients/Makefile.in", "ext/libmemcached-0.32/clients/client_options.h", "ext/libmemcached-0.32/clients/execute.c", "ext/libmemcached-0.32/clients/execute.h", "ext/libmemcached-0.32/clients/generator.c", "ext/libmemcached-0.32/clients/generator.h", "ext/libmemcached-0.32/clients/memcat.c", "ext/libmemcached-0.32/clients/memcp.c", "ext/libmemcached-0.32/clients/memdump.c", "ext/libmemcached-0.32/clients/memerror.c", "ext/libmemcached-0.32/clients/memflush.c", "ext/libmemcached-0.32/clients/memrm.c", "ext/libmemcached-0.32/clients/memslap.c", "ext/libmemcached-0.32/clients/memstat.c", "ext/libmemcached-0.32/clients/utilities.c", "ext/libmemcached-0.32/clients/utilities.h", "ext/libmemcached-0.32/config.h.in", "ext/libmemcached-0.32/config/compile", "ext/libmemcached-0.32/config/config.guess", "ext/libmemcached-0.32/config/config.rpath", "ext/libmemcached-0.32/config/config.sub", "ext/libmemcached-0.32/config/depcomp", "ext/libmemcached-0.32/config/install-sh", "ext/libmemcached-0.32/config/ltmain.sh", "ext/libmemcached-0.32/config/missing", "ext/libmemcached-0.32/configure", "ext/libmemcached-0.32/configure.ac", "ext/libmemcached-0.32/docs/Makefile.am", "ext/libmemcached-0.32/docs/Makefile.in", "ext/libmemcached-0.32/docs/libmemcached.pod", "ext/libmemcached-0.32/docs/libmemcached_examples.pod", "ext/libmemcached-0.32/docs/libmemcachedutil.pod", "ext/libmemcached-0.32/docs/memcached_analyze.pod", "ext/libmemcached-0.32/docs/memcached_auto.pod", "ext/libmemcached-0.32/docs/memcached_behavior.pod", "ext/libmemcached-0.32/docs/memcached_callback.pod", "ext/libmemcached-0.32/docs/memcached_create.pod", "ext/libmemcached-0.32/docs/memcached_delete.pod", "ext/libmemcached-0.32/docs/memcached_dump.pod", "ext/libmemcached-0.32/docs/memcached_flush.pod", "ext/libmemcached-0.32/docs/memcached_flush_buffers.pod", "ext/libmemcached-0.32/docs/memcached_generate_hash_value.pod", "ext/libmemcached-0.32/docs/memcached_get.pod", "ext/libmemcached-0.32/docs/memcached_memory_allocators.pod", "ext/libmemcached-0.32/docs/memcached_pool.pod", "ext/libmemcached-0.32/docs/memcached_quit.pod", "ext/libmemcached-0.32/docs/memcached_sasl.pod", "ext/libmemcached-0.32/docs/memcached_server_st.pod", "ext/libmemcached-0.32/docs/memcached_servers.pod", "ext/libmemcached-0.32/docs/memcached_set.pod", "ext/libmemcached-0.32/docs/memcached_stats.pod", "ext/libmemcached-0.32/docs/memcached_strerror.pod", "ext/libmemcached-0.32/docs/memcached_user_data.pod", "ext/libmemcached-0.32/docs/memcached_verbosity.pod", "ext/libmemcached-0.32/docs/memcached_version.pod", "ext/libmemcached-0.32/docs/memcat.pod", "ext/libmemcached-0.32/docs/memcp.pod", "ext/libmemcached-0.32/docs/memdump.pod", "ext/libmemcached-0.32/docs/memerror.pod", "ext/libmemcached-0.32/docs/memflush.pod", "ext/libmemcached-0.32/docs/memrm.pod", "ext/libmemcached-0.32/docs/memslap.pod", "ext/libmemcached-0.32/docs/memstat.pod", "ext/libmemcached-0.32/libmemcached/Makefile.am", "ext/libmemcached-0.32/libmemcached/Makefile.in", "ext/libmemcached-0.32/libmemcached/byteorder.c", "ext/libmemcached-0.32/libmemcached/common.h", "ext/libmemcached-0.32/libmemcached/crc.c", "ext/libmemcached-0.32/libmemcached/hsieh_hash.c", "ext/libmemcached-0.32/libmemcached/jenkins_hash.c", "ext/libmemcached-0.32/libmemcached/libmemcached.ver", "ext/libmemcached-0.32/libmemcached/libmemcached_probes.d", "ext/libmemcached-0.32/libmemcached/libmemcached_probes.h", "ext/libmemcached-0.32/libmemcached/md5.c", "ext/libmemcached-0.32/libmemcached/memcached.c", "ext/libmemcached-0.32/libmemcached/memcached.h", "ext/libmemcached-0.32/libmemcached/memcached.hpp", "ext/libmemcached-0.32/libmemcached/memcached/README.txt", "ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h", "ext/libmemcached-0.32/libmemcached/memcached_allocators.c", "ext/libmemcached-0.32/libmemcached/memcached_analyze.c", "ext/libmemcached-0.32/libmemcached/memcached_auto.c", "ext/libmemcached-0.32/libmemcached/memcached_behavior.c", "ext/libmemcached-0.32/libmemcached/memcached_callback.c", "ext/libmemcached-0.32/libmemcached/memcached_configure.h.in", "ext/libmemcached-0.32/libmemcached/memcached_connect.c", "ext/libmemcached-0.32/libmemcached/memcached_constants.h", "ext/libmemcached-0.32/libmemcached/memcached_delete.c", "ext/libmemcached-0.32/libmemcached/memcached_do.c", "ext/libmemcached-0.32/libmemcached/memcached_dump.c", "ext/libmemcached-0.32/libmemcached/memcached_fetch.c", "ext/libmemcached-0.32/libmemcached/memcached_flush.c", "ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c", "ext/libmemcached-0.32/libmemcached/memcached_get.c", "ext/libmemcached-0.32/libmemcached/memcached_get.h", "ext/libmemcached-0.32/libmemcached/memcached_hash.c", "ext/libmemcached-0.32/libmemcached/memcached_hosts.c", "ext/libmemcached-0.32/libmemcached/memcached_internal.h", "ext/libmemcached-0.32/libmemcached/memcached_io.c", "ext/libmemcached-0.32/libmemcached/memcached_io.h", "ext/libmemcached-0.32/libmemcached/memcached_key.c", "ext/libmemcached-0.32/libmemcached/memcached_parse.c", "ext/libmemcached-0.32/libmemcached/memcached_pool.h", "ext/libmemcached-0.32/libmemcached/memcached_purge.c", "ext/libmemcached-0.32/libmemcached/memcached_quit.c", "ext/libmemcached-0.32/libmemcached/memcached_response.c", "ext/libmemcached-0.32/libmemcached/memcached_result.c", "ext/libmemcached-0.32/libmemcached/memcached_result.h", "ext/libmemcached-0.32/libmemcached/memcached_sasl.c", "ext/libmemcached-0.32/libmemcached/memcached_sasl.h", "ext/libmemcached-0.32/libmemcached/memcached_server.c", "ext/libmemcached-0.32/libmemcached/memcached_server.h", "ext/libmemcached-0.32/libmemcached/memcached_stats.c", "ext/libmemcached-0.32/libmemcached/memcached_storage.c", "ext/libmemcached-0.32/libmemcached/memcached_storage.h", "ext/libmemcached-0.32/libmemcached/memcached_strerror.c", "ext/libmemcached-0.32/libmemcached/memcached_string.c", "ext/libmemcached-0.32/libmemcached/memcached_string.h", "ext/libmemcached-0.32/libmemcached/memcached_touch.c", "ext/libmemcached-0.32/libmemcached/memcached_touch.h", "ext/libmemcached-0.32/libmemcached/memcached_types.h", "ext/libmemcached-0.32/libmemcached/memcached_util.h", "ext/libmemcached-0.32/libmemcached/memcached_verbosity.c", "ext/libmemcached-0.32/libmemcached/memcached_version.c", "ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h", "ext/libmemcached-0.32/libmemcached/murmur_hash.c", "ext/libmemcached-0.32/libmemcached/visibility.h", "ext/libmemcached-0.32/libmemcachedutil/Makefile.am", "ext/libmemcached-0.32/libmemcachedutil/Makefile.in", "ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver", "ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c", "ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4", "ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4", "ext/libmemcached-0.32/m4/aclocal.m4", "ext/libmemcached-0.32/m4/acx_pthread.m4", "ext/libmemcached-0.32/m4/byteorder.m4", "ext/libmemcached-0.32/m4/deprecated.m4", "ext/libmemcached-0.32/m4/enable_utillib.m4", "ext/libmemcached-0.32/m4/extensions.m4", "ext/libmemcached-0.32/m4/hsieh.m4", "ext/libmemcached-0.32/m4/lib-prefix.m4", "ext/libmemcached-0.32/m4/libtool.m4", "ext/libmemcached-0.32/m4/ltoptions.m4", "ext/libmemcached-0.32/m4/ltsugar.m4", "ext/libmemcached-0.32/m4/ltversion.m4", "ext/libmemcached-0.32/m4/lt~obsolete.m4", "ext/libmemcached-0.32/m4/memcached.m4", "ext/libmemcached-0.32/m4/pandora_64bit.m4", "ext/libmemcached-0.32/m4/pandora_canonical.m4", "ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4", "ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4", "ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4", "ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4", "ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4", "ext/libmemcached-0.32/m4/pandora_have_sasl.m4", "ext/libmemcached-0.32/m4/pandora_header_assert.m4", "ext/libmemcached-0.32/m4/pandora_libtool.m4", "ext/libmemcached-0.32/m4/pandora_optimize.m4", "ext/libmemcached-0.32/m4/pandora_shared_ptr.m4", "ext/libmemcached-0.32/m4/pandora_vc_build.m4", "ext/libmemcached-0.32/m4/pandora_warnings.m4", "ext/libmemcached-0.32/m4/pod2man.m4", "ext/libmemcached-0.32/m4/protocol_binary.m4", "ext/libmemcached-0.32/m4/setsockopt.m4", "ext/libmemcached-0.32/m4/visibility.m4", "ext/libmemcached-0.32/support/Makefile.am", "ext/libmemcached-0.32/support/Makefile.in", "ext/libmemcached-0.32/support/libmemcached-fc.spec.in", "ext/libmemcached-0.32/support/libmemcached.pc.in", "ext/libmemcached-0.32/support/libmemcached.spec", "ext/libmemcached-0.32/support/libmemcached.spec.in", "ext/libmemcached-0.32/support/set_benchmark.sh", "ext/libmemcached-0.32/tests/Makefile.am", "ext/libmemcached-0.32/tests/Makefile.in", "ext/libmemcached-0.32/tests/atomsmasher.c", "ext/libmemcached-0.32/tests/function.c", "ext/libmemcached-0.32/tests/ketama_test_cases.h", "ext/libmemcached-0.32/tests/output.cmp", "ext/libmemcached-0.32/tests/output.res", "ext/libmemcached-0.32/tests/output2.res", "ext/libmemcached-0.32/tests/plus.cpp", "ext/libmemcached-0.32/tests/r/memcat.res", "ext/libmemcached-0.32/tests/r/memcp.res", "ext/libmemcached-0.32/tests/r/memrm.res", "ext/libmemcached-0.32/tests/r/memslap.res", "ext/libmemcached-0.32/tests/r/memstat.res", "ext/libmemcached-0.32/tests/server.c", "ext/libmemcached-0.32/tests/server.h", "ext/libmemcached-0.32/tests/start.c", "ext/libmemcached-0.32/tests/t/memcat.test", "ext/libmemcached-0.32/tests/t/memcp.test", "ext/libmemcached-0.32/tests/t/memrm.test", "ext/libmemcached-0.32/tests/t/memslap.test", "ext/libmemcached-0.32/tests/t/memstat.test", "ext/libmemcached-0.32/tests/test.c", "ext/libmemcached-0.32/tests/test.h", "ext/libmemcached-0.32/tests/udp.c", "ext/rlibmemcached.i", "ext/rlibmemcached_wrap.c", "lib/memcached.rb", "lib/memcached/auth.rb", "lib/memcached/behaviors.rb", "lib/memcached/exceptions.rb", "lib/memcached/experimental.rb", "lib/memcached/memcached.rb", "lib/memcached/rails.rb", "test/profile/benchmark.rb", "test/profile/c_profiler.rb", "test/profile/exercise.rb", "test/profile/rb_profiler.rb", "test/profile/valgrind.rb", "test/setup.rb", "test/teardown.rb", "test/test_helper.rb", "test/unit/binding_test.rb", "test/unit/memcached_experimental_test.rb", "test/unit/memcached_test.rb", "test/unit/rails_test.rb", "memcached.gemspec"]
|
16
|
-
s.homepage =
|
17
|
-
s.rdoc_options = [
|
18
|
-
s.require_paths = [
|
19
|
-
s.rubyforge_project =
|
20
|
-
s.rubygems_version =
|
21
|
-
s.signing_key =
|
22
|
-
s.summary =
|
23
|
-
s.test_files = [
|
8
|
+
s.authors = [%q{Evan Weaver}]
|
9
|
+
s.cert_chain = [%q{/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem}]
|
10
|
+
s.date = %q{2012-02-27}
|
11
|
+
s.description = %q{An interface to the libmemcached C client.}
|
12
|
+
s.email = %q{}
|
13
|
+
s.extensions = [%q{ext/extconf.rb}]
|
14
|
+
s.extra_rdoc_files = [%q{BENCHMARKS}, %q{CHANGELOG}, %q{LICENSE}, %q{README.rdoc}, %q{TODO}, %q{ext/libmemcached-0.32/README}, %q{ext/libmemcached-0.32/TODO}, %q{ext/libmemcached-0.32/libmemcached/memcached/README.txt}, %q{lib/memcached.rb}, %q{lib/memcached/behaviors.rb}, %q{lib/memcached/exceptions.rb}, %q{lib/memcached/experimental.rb}, %q{lib/memcached/memcached.rb}, %q{lib/memcached/rails.rb}]
|
15
|
+
s.files = [%q{BENCHMARKS}, %q{CHANGELOG}, %q{LICENSE}, %q{Manifest}, %q{README.rdoc}, %q{Rakefile}, %q{TODO}, %q{ext/extconf-make.rb}, %q{ext/extconf.rb}, %q{ext/libmemcached-0.32/AUTHORS}, %q{ext/libmemcached-0.32/COPYING}, %q{ext/libmemcached-0.32/ChangeLog}, %q{ext/libmemcached-0.32/INSTALL}, %q{ext/libmemcached-0.32/Makefile.am}, %q{ext/libmemcached-0.32/Makefile.in}, %q{ext/libmemcached-0.32/NEWS}, %q{ext/libmemcached-0.32/README}, %q{ext/libmemcached-0.32/THANKS}, %q{ext/libmemcached-0.32/TODO}, %q{ext/libmemcached-0.32/aclocal.m4}, %q{ext/libmemcached-0.32/clients/Makefile.am}, %q{ext/libmemcached-0.32/clients/Makefile.in}, %q{ext/libmemcached-0.32/clients/client_options.h}, %q{ext/libmemcached-0.32/clients/execute.c}, %q{ext/libmemcached-0.32/clients/execute.h}, %q{ext/libmemcached-0.32/clients/generator.c}, %q{ext/libmemcached-0.32/clients/generator.h}, %q{ext/libmemcached-0.32/clients/memcat.c}, %q{ext/libmemcached-0.32/clients/memcp.c}, %q{ext/libmemcached-0.32/clients/memdump.c}, %q{ext/libmemcached-0.32/clients/memerror.c}, %q{ext/libmemcached-0.32/clients/memflush.c}, %q{ext/libmemcached-0.32/clients/memrm.c}, %q{ext/libmemcached-0.32/clients/memslap.c}, %q{ext/libmemcached-0.32/clients/memstat.c}, %q{ext/libmemcached-0.32/clients/utilities.c}, %q{ext/libmemcached-0.32/clients/utilities.h}, %q{ext/libmemcached-0.32/config.h.in}, %q{ext/libmemcached-0.32/config/compile}, %q{ext/libmemcached-0.32/config/config.guess}, %q{ext/libmemcached-0.32/config/config.rpath}, %q{ext/libmemcached-0.32/config/config.sub}, %q{ext/libmemcached-0.32/config/depcomp}, %q{ext/libmemcached-0.32/config/install-sh}, %q{ext/libmemcached-0.32/config/ltmain.sh}, %q{ext/libmemcached-0.32/config/missing}, %q{ext/libmemcached-0.32/configure}, %q{ext/libmemcached-0.32/configure.ac}, %q{ext/libmemcached-0.32/docs/Makefile.am}, %q{ext/libmemcached-0.32/docs/Makefile.in}, %q{ext/libmemcached-0.32/docs/libmemcached.pod}, %q{ext/libmemcached-0.32/docs/libmemcached_examples.pod}, %q{ext/libmemcached-0.32/docs/libmemcachedutil.pod}, %q{ext/libmemcached-0.32/docs/memcached_analyze.pod}, %q{ext/libmemcached-0.32/docs/memcached_auto.pod}, %q{ext/libmemcached-0.32/docs/memcached_behavior.pod}, %q{ext/libmemcached-0.32/docs/memcached_callback.pod}, %q{ext/libmemcached-0.32/docs/memcached_create.pod}, %q{ext/libmemcached-0.32/docs/memcached_delete.pod}, %q{ext/libmemcached-0.32/docs/memcached_dump.pod}, %q{ext/libmemcached-0.32/docs/memcached_flush.pod}, %q{ext/libmemcached-0.32/docs/memcached_flush_buffers.pod}, %q{ext/libmemcached-0.32/docs/memcached_generate_hash_value.pod}, %q{ext/libmemcached-0.32/docs/memcached_get.pod}, %q{ext/libmemcached-0.32/docs/memcached_memory_allocators.pod}, %q{ext/libmemcached-0.32/docs/memcached_pool.pod}, %q{ext/libmemcached-0.32/docs/memcached_quit.pod}, %q{ext/libmemcached-0.32/docs/memcached_sasl.pod}, %q{ext/libmemcached-0.32/docs/memcached_server_st.pod}, %q{ext/libmemcached-0.32/docs/memcached_servers.pod}, %q{ext/libmemcached-0.32/docs/memcached_set.pod}, %q{ext/libmemcached-0.32/docs/memcached_stats.pod}, %q{ext/libmemcached-0.32/docs/memcached_strerror.pod}, %q{ext/libmemcached-0.32/docs/memcached_user_data.pod}, %q{ext/libmemcached-0.32/docs/memcached_verbosity.pod}, %q{ext/libmemcached-0.32/docs/memcached_version.pod}, %q{ext/libmemcached-0.32/docs/memcat.pod}, %q{ext/libmemcached-0.32/docs/memcp.pod}, %q{ext/libmemcached-0.32/docs/memdump.pod}, %q{ext/libmemcached-0.32/docs/memerror.pod}, %q{ext/libmemcached-0.32/docs/memflush.pod}, %q{ext/libmemcached-0.32/docs/memrm.pod}, %q{ext/libmemcached-0.32/docs/memslap.pod}, %q{ext/libmemcached-0.32/docs/memstat.pod}, %q{ext/libmemcached-0.32/libmemcached/Makefile.am}, %q{ext/libmemcached-0.32/libmemcached/Makefile.in}, %q{ext/libmemcached-0.32/libmemcached/byteorder.c}, %q{ext/libmemcached-0.32/libmemcached/common.h}, %q{ext/libmemcached-0.32/libmemcached/crc.c}, %q{ext/libmemcached-0.32/libmemcached/hsieh_hash.c}, %q{ext/libmemcached-0.32/libmemcached/jenkins_hash.c}, %q{ext/libmemcached-0.32/libmemcached/libmemcached.ver}, %q{ext/libmemcached-0.32/libmemcached/libmemcached_probes.d}, %q{ext/libmemcached-0.32/libmemcached/libmemcached_probes.h}, %q{ext/libmemcached-0.32/libmemcached/md5.c}, %q{ext/libmemcached-0.32/libmemcached/memcached.c}, %q{ext/libmemcached-0.32/libmemcached/memcached.h}, %q{ext/libmemcached-0.32/libmemcached/memcached.hpp}, %q{ext/libmemcached-0.32/libmemcached/memcached/README.txt}, %q{ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_allocators.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_analyze.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_auto.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_behavior.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_callback.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_configure.h.in}, %q{ext/libmemcached-0.32/libmemcached/memcached_connect.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_constants.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_delete.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_do.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_dump.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_fetch.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_flush.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_get.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_get.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_hash.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_hosts.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_internal.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_io.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_io.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_key.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_parse.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_pool.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_purge.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_quit.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_response.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_result.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_result.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_sasl.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_sasl.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_server.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_server.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_stats.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_storage.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_storage.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_strerror.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_string.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_string.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_touch.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_touch.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_types.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_util.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_verbosity.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_version.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h}, %q{ext/libmemcached-0.32/libmemcached/murmur_hash.c}, %q{ext/libmemcached-0.32/libmemcached/visibility.h}, %q{ext/libmemcached-0.32/libmemcachedutil/Makefile.am}, %q{ext/libmemcached-0.32/libmemcachedutil/Makefile.in}, %q{ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver}, %q{ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c}, %q{ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4}, %q{ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4}, %q{ext/libmemcached-0.32/m4/aclocal.m4}, %q{ext/libmemcached-0.32/m4/acx_pthread.m4}, %q{ext/libmemcached-0.32/m4/byteorder.m4}, %q{ext/libmemcached-0.32/m4/deprecated.m4}, %q{ext/libmemcached-0.32/m4/enable_utillib.m4}, %q{ext/libmemcached-0.32/m4/extensions.m4}, %q{ext/libmemcached-0.32/m4/hsieh.m4}, %q{ext/libmemcached-0.32/m4/lib-prefix.m4}, %q{ext/libmemcached-0.32/m4/libtool.m4}, %q{ext/libmemcached-0.32/m4/ltoptions.m4}, %q{ext/libmemcached-0.32/m4/ltsugar.m4}, %q{ext/libmemcached-0.32/m4/ltversion.m4}, %q{ext/libmemcached-0.32/m4/lt~obsolete.m4}, %q{ext/libmemcached-0.32/m4/memcached.m4}, %q{ext/libmemcached-0.32/m4/pandora_64bit.m4}, %q{ext/libmemcached-0.32/m4/pandora_canonical.m4}, %q{ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4}, %q{ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4}, %q{ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4}, %q{ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4}, %q{ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4}, %q{ext/libmemcached-0.32/m4/pandora_have_sasl.m4}, %q{ext/libmemcached-0.32/m4/pandora_header_assert.m4}, %q{ext/libmemcached-0.32/m4/pandora_libtool.m4}, %q{ext/libmemcached-0.32/m4/pandora_optimize.m4}, %q{ext/libmemcached-0.32/m4/pandora_shared_ptr.m4}, %q{ext/libmemcached-0.32/m4/pandora_vc_build.m4}, %q{ext/libmemcached-0.32/m4/pandora_warnings.m4}, %q{ext/libmemcached-0.32/m4/pod2man.m4}, %q{ext/libmemcached-0.32/m4/protocol_binary.m4}, %q{ext/libmemcached-0.32/m4/setsockopt.m4}, %q{ext/libmemcached-0.32/m4/visibility.m4}, %q{ext/libmemcached-0.32/support/Makefile.am}, %q{ext/libmemcached-0.32/support/Makefile.in}, %q{ext/libmemcached-0.32/support/libmemcached-fc.spec.in}, %q{ext/libmemcached-0.32/support/libmemcached.pc.in}, %q{ext/libmemcached-0.32/support/libmemcached.spec}, %q{ext/libmemcached-0.32/support/libmemcached.spec.in}, %q{ext/libmemcached-0.32/support/set_benchmark.sh}, %q{ext/libmemcached-0.32/tests/Makefile.am}, %q{ext/libmemcached-0.32/tests/Makefile.in}, %q{ext/libmemcached-0.32/tests/atomsmasher.c}, %q{ext/libmemcached-0.32/tests/function.c}, %q{ext/libmemcached-0.32/tests/ketama_test_cases.h}, %q{ext/libmemcached-0.32/tests/output.cmp}, %q{ext/libmemcached-0.32/tests/output.res}, %q{ext/libmemcached-0.32/tests/output2.res}, %q{ext/libmemcached-0.32/tests/plus.cpp}, %q{ext/libmemcached-0.32/tests/r/memcat.res}, %q{ext/libmemcached-0.32/tests/r/memcp.res}, %q{ext/libmemcached-0.32/tests/r/memrm.res}, %q{ext/libmemcached-0.32/tests/r/memslap.res}, %q{ext/libmemcached-0.32/tests/r/memstat.res}, %q{ext/libmemcached-0.32/tests/server.c}, %q{ext/libmemcached-0.32/tests/server.h}, %q{ext/libmemcached-0.32/tests/start.c}, %q{ext/libmemcached-0.32/tests/t/memcat.test}, %q{ext/libmemcached-0.32/tests/t/memcp.test}, %q{ext/libmemcached-0.32/tests/t/memrm.test}, %q{ext/libmemcached-0.32/tests/t/memslap.test}, %q{ext/libmemcached-0.32/tests/t/memstat.test}, %q{ext/libmemcached-0.32/tests/test.c}, %q{ext/libmemcached-0.32/tests/test.h}, %q{ext/libmemcached-0.32/tests/udp.c}, %q{ext/rlibmemcached.i}, %q{ext/rlibmemcached_wrap.c}, %q{lib/memcached.rb}, %q{lib/memcached/auth.rb}, %q{lib/memcached/behaviors.rb}, %q{lib/memcached/exceptions.rb}, %q{lib/memcached/experimental.rb}, %q{lib/memcached/memcached.rb}, %q{lib/memcached/rails.rb}, %q{test/profile/benchmark.rb}, %q{test/profile/c_profiler.rb}, %q{test/profile/exercise.rb}, %q{test/profile/rb_profiler.rb}, %q{test/profile/valgrind.rb}, %q{test/setup.rb}, %q{test/teardown.rb}, %q{test/test_helper.rb}, %q{test/unit/binding_test.rb}, %q{test/unit/memcached_experimental_test.rb}, %q{test/unit/memcached_test.rb}, %q{test/unit/rails_test.rb}, %q{memcached.gemspec}]
|
16
|
+
s.homepage = %q{http://evan.github.com/evan/memcached/}
|
17
|
+
s.rdoc_options = [%q{--line-numbers}, %q{--inline-source}, %q{--title}, %q{Memcached}, %q{--main}, %q{README.rdoc}, %q{--exclude=ext/bin}, %q{--exclude=ext/libmemcached-.*/(clients|tests)}]
|
18
|
+
s.require_paths = [%q{lib}, %q{ext}]
|
19
|
+
s.rubyforge_project = %q{evan}
|
20
|
+
s.rubygems_version = %q{1.8.6}
|
21
|
+
s.signing_key = %q{/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-private_key.pem}
|
22
|
+
s.summary = %q{An interface to the libmemcached C client.}
|
23
|
+
s.test_files = [%q{test/test_helper.rb}, %q{test/unit/binding_test.rb}, %q{test/unit/memcached_experimental_test.rb}, %q{test/unit/memcached_test.rb}, %q{test/unit/rails_test.rb}]
|
24
24
|
|
25
25
|
if s.respond_to? :specification_version then
|
26
26
|
s.specification_version = 3
|
@@ -60,7 +60,7 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def test_get_len
|
63
|
-
server_get_len_capable
|
63
|
+
server_get_len_capable do
|
64
64
|
value = "foobar"
|
65
65
|
@experimental_cache.set key, value, 0, false
|
66
66
|
result = @experimental_cache.get_len 1, key
|
@@ -82,52 +82,52 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
82
82
|
result = @experimental_cache.get_len 32, key
|
83
83
|
assert_equal result.size, 6
|
84
84
|
assert_equal result, value
|
85
|
-
|
85
|
+
end
|
86
86
|
end
|
87
87
|
|
88
88
|
def test_get_len_0_failure
|
89
|
-
server_get_len_capable
|
89
|
+
server_get_len_capable do
|
90
90
|
value = "Test that we cannot get 0 bytes with a get_len call."
|
91
91
|
@experimental_cache.set key, value, 0, false
|
92
92
|
assert_raises(Memcached::Failure) do
|
93
93
|
result = @experimental_cache.get_len 0, key
|
94
94
|
end
|
95
|
-
|
95
|
+
end
|
96
96
|
end
|
97
97
|
|
98
98
|
def test_get_len_large
|
99
|
-
server_get_len_capable
|
99
|
+
server_get_len_capable do
|
100
100
|
value = "Test that we can get the first 20 bytes of a string"
|
101
101
|
@experimental_cache.set key, value, 0, false
|
102
102
|
result = @experimental_cache.get_len 20, key
|
103
103
|
assert_equal result.size, 20
|
104
104
|
assert_equal result, value[0..19]
|
105
|
-
|
105
|
+
end
|
106
106
|
end
|
107
107
|
|
108
108
|
def test_get_len_packed
|
109
|
-
server_get_len_capable
|
109
|
+
server_get_len_capable do
|
110
110
|
value = [1, 2, 3, 4].pack("Q*")
|
111
111
|
@experimental_cache.set key, value, 0, false
|
112
112
|
result = @experimental_cache.get_len 8, key
|
113
113
|
assert_equal [1], result.unpack("Q*")
|
114
|
-
|
114
|
+
end
|
115
115
|
end
|
116
116
|
|
117
117
|
# get_len is not supported when using the binary protocol.
|
118
118
|
# Make sure the single get variant fails appropriately.
|
119
119
|
def test_get_len_binary
|
120
|
-
server_get_len_capable
|
120
|
+
server_get_len_capable do
|
121
121
|
@experimental_binary_protocol_cache.set key, @value
|
122
122
|
assert_raises(Memcached::ActionNotSupported) do
|
123
123
|
result = @experimental_binary_protocol_cache.get_len 2, key
|
124
124
|
end
|
125
|
-
|
125
|
+
end
|
126
126
|
end
|
127
127
|
|
128
128
|
# Retrieve the first 64 bits of the values for multiple keys.
|
129
129
|
def test_get_len_multi_packed
|
130
|
-
server_get_len_capable
|
130
|
+
server_get_len_capable do
|
131
131
|
key_1 = "get_len_1"
|
132
132
|
value_1 = [1, 2, 3].pack("Q*")
|
133
133
|
key_2 = "get_len_missing"
|
@@ -140,13 +140,13 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
140
140
|
{key_1=>value_1[0..7], key_3=>value_3[0..7]},
|
141
141
|
@experimental_cache.get_len(8, keys)
|
142
142
|
)
|
143
|
-
|
143
|
+
end
|
144
144
|
end
|
145
145
|
|
146
146
|
# Test that the entire value is passed back when the length specified
|
147
147
|
# is larger than any of the values (e.g., 32 in the case below).
|
148
148
|
def test_get_len_multi_packed_full
|
149
|
-
server_get_len_capable
|
149
|
+
server_get_len_capable do
|
150
150
|
key_1 = "get_len_1"
|
151
151
|
value_1 = [1, 2, 3].pack("Q*")
|
152
152
|
key_2 = "get_len_missing"
|
@@ -159,13 +159,13 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
159
159
|
{key_1=>value_1, key_3=>value_3},
|
160
160
|
@experimental_cache.get_len(32, keys)
|
161
161
|
)
|
162
|
-
|
162
|
+
end
|
163
163
|
end
|
164
164
|
|
165
165
|
# get_len is not supported when using the binary protocol.
|
166
166
|
# Test that the multi get variant fails appropriately.
|
167
167
|
def test_get_len_multi_packed_binary
|
168
|
-
server_get_len_capable
|
168
|
+
server_get_len_capable do
|
169
169
|
key_1 = "get_len_1"
|
170
170
|
value_1 = [1, 2, 3].pack("Q*")
|
171
171
|
key_2 = "get_len_2"
|
@@ -176,63 +176,63 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
176
176
|
assert_raises(Memcached::ActionNotSupported) do
|
177
177
|
result = @experimental_binary_protocol_cache.get_len 2, keys
|
178
178
|
end
|
179
|
-
|
179
|
+
end
|
180
180
|
end
|
181
181
|
|
182
182
|
def test_get_len_multi_completely_missing
|
183
|
-
server_get_len_capable
|
183
|
+
server_get_len_capable do
|
184
184
|
@experimental_cache.delete "#{key}_1" rescue nil
|
185
185
|
@experimental_cache.delete "#{key}_2" rescue nil
|
186
186
|
assert_equal(
|
187
187
|
{},
|
188
188
|
@experimental_cache.get_len(1, ["#{key}_1", "#{key}_2"])
|
189
189
|
)
|
190
|
-
|
190
|
+
end
|
191
191
|
end
|
192
192
|
|
193
193
|
def test_get_len_failure
|
194
|
-
server_get_len_capable
|
194
|
+
server_get_len_capable do
|
195
195
|
value = "Test that we cannot use get_len without setting the :experimental_features config."
|
196
196
|
assert_raises(NoMethodError) do
|
197
197
|
result = @cache.get_len 10, key
|
198
198
|
end
|
199
|
-
|
199
|
+
end
|
200
200
|
end
|
201
201
|
|
202
202
|
def test_cas
|
203
|
-
server_get_len_capable
|
203
|
+
server_get_len_capable do
|
204
204
|
# Get the first three chars of the value back.
|
205
205
|
@experimental_cas_cache.set(key, "foo_bar", 0, false)
|
206
206
|
assert_equal "foo", @experimental_cas_cache.get_len(3, key)
|
207
207
|
assert_equal "foo_bar", @experimental_cas_cache.get_len(7, key)
|
208
|
-
|
208
|
+
end
|
209
209
|
end
|
210
210
|
|
211
211
|
# Touch command
|
212
212
|
|
213
213
|
def test_touch_capability
|
214
|
-
server_touch_capable
|
215
|
-
@
|
214
|
+
server_touch_capable do
|
215
|
+
@experimental_binary_protocol_cache.set(key, "value", 10)
|
216
216
|
assert_nothing_raised do
|
217
|
-
@experimental_binary_protocol_cache.touch(key,
|
217
|
+
@experimental_binary_protocol_cache.touch(key, 20)
|
218
218
|
end
|
219
219
|
assert_raises(Memcached::ActionNotSupported) do
|
220
220
|
@experimental_cache.touch(key, 10)
|
221
221
|
end
|
222
|
-
|
222
|
+
end
|
223
223
|
end
|
224
224
|
|
225
225
|
def test_touch_missing_key
|
226
|
-
server_touch_capable
|
226
|
+
server_touch_capable do
|
227
227
|
@experimental_binary_protocol_cache.delete key rescue nil
|
228
228
|
assert_raises(Memcached::NotFound) do
|
229
229
|
@experimental_binary_protocol_cache.touch(key, 10)
|
230
230
|
end
|
231
|
-
|
231
|
+
end
|
232
232
|
end
|
233
233
|
|
234
234
|
def test_touch
|
235
|
-
server_touch_capable
|
235
|
+
server_touch_capable do
|
236
236
|
@experimental_binary_protocol_cache.set key, @value, 2
|
237
237
|
assert_equal @value, @experimental_binary_protocol_cache.get(key)
|
238
238
|
sleep(1)
|
@@ -244,7 +244,7 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
244
244
|
assert_raises(Memcached::NotFound) do
|
245
245
|
@experimental_binary_protocol_cache.get(key)
|
246
246
|
end
|
247
|
-
|
247
|
+
end
|
248
248
|
end
|
249
249
|
|
250
250
|
# Memory cleanup
|
data/test/unit/rails_test.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
|
2
2
|
require File.expand_path("#{File.dirname(__FILE__)}/../test_helper")
|
3
|
+
require 'active_support/duration'
|
3
4
|
|
4
5
|
class RailsTest < Test::Unit::TestCase
|
5
6
|
|
6
7
|
def setup
|
7
8
|
@servers = ['127.0.0.1:43042', '127.0.0.1:43043', "#{UNIX_SOCKET_NAME}0"]
|
9
|
+
@duration = ActiveSupport::Duration.new(2592000, [[:months, 1]])
|
8
10
|
@namespace = 'rails_test'
|
9
11
|
@cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace)
|
10
12
|
@value = OpenStruct.new(:a => 1, :b => 2, :c => GenericClass)
|
@@ -18,6 +20,7 @@ class RailsTest < Test::Unit::TestCase
|
|
18
20
|
end
|
19
21
|
|
20
22
|
def test_exist
|
23
|
+
@cache.delete(key)
|
21
24
|
assert !@cache.exist?(key)
|
22
25
|
@cache.set key, nil
|
23
26
|
assert @cache.exist?(key)
|
@@ -115,10 +118,70 @@ class RailsTest < Test::Unit::TestCase
|
|
115
118
|
assert_equal @namespace, @cache.namespace
|
116
119
|
end
|
117
120
|
|
121
|
+
def test_active
|
122
|
+
assert @cache.active?
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_servers
|
126
|
+
compare_servers @cache, @servers
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_servers_alive
|
130
|
+
@cache.servers.each do |server|
|
131
|
+
assert server.alive?
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_set_servers
|
136
|
+
cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace)
|
137
|
+
compare_servers cache, @servers
|
138
|
+
cache.set_servers cache.servers
|
139
|
+
cache = Memcached::Rails.new(:servers => @servers.first, :namespace => @namespace)
|
140
|
+
cache.set_servers @servers.first
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_cas_with_duration
|
144
|
+
cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace, :support_cas => true)
|
145
|
+
value2 = OpenStruct.new(:d => 3, :e => 4, :f => GenericClass)
|
146
|
+
cache.set key, @value
|
147
|
+
cache.cas(key, @duration) do |current|
|
148
|
+
assert_equal @value, current
|
149
|
+
value2
|
150
|
+
end
|
151
|
+
assert_equal value2, cache.get(key)
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_set_with_duration
|
155
|
+
@cache.set key, @value, @duration
|
156
|
+
result = @cache.get key
|
157
|
+
assert_equal @value, result
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_set_with_invalid_type
|
161
|
+
assert_raises(TypeError) do
|
162
|
+
@cache.set key, Object.new, 0, true
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_write_with_duration
|
167
|
+
@cache.write key, @value, :ttl => @duration
|
168
|
+
result = @cache.get key
|
169
|
+
assert_equal @value, result
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_add_with_duration
|
173
|
+
@cache.add key, @value, @duration
|
174
|
+
result = @cache.get key
|
175
|
+
assert_equal @value, result
|
176
|
+
end
|
177
|
+
|
118
178
|
private
|
119
179
|
|
120
180
|
def key
|
121
181
|
caller.first[/.*[` ](.*)'/, 1] # '
|
122
182
|
end
|
123
183
|
|
184
|
+
def compare_servers(cache, servers)
|
185
|
+
cache.servers.map{|s| "#{s.hostname}:#{s.port}".chomp(':0')} == servers
|
186
|
+
end
|
124
187
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memcached
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -50,7 +50,7 @@ cert_chain:
|
|
50
50
|
-----END CERTIFICATE-----
|
51
51
|
|
52
52
|
'
|
53
|
-
date: 2012-02-
|
53
|
+
date: 2012-02-27 00:00:00.000000000Z
|
54
54
|
dependencies: []
|
55
55
|
description: An interface to the libmemcached C client.
|
56
56
|
email: ''
|
@@ -313,7 +313,7 @@ files:
|
|
313
313
|
- test/unit/memcached_test.rb
|
314
314
|
- test/unit/rails_test.rb
|
315
315
|
- memcached.gemspec
|
316
|
-
homepage: http://
|
316
|
+
homepage: http://evan.github.com/evan/memcached/
|
317
317
|
licenses: []
|
318
318
|
post_install_message:
|
319
319
|
rdoc_options:
|
@@ -341,8 +341,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
341
341
|
- !ruby/object:Gem::Version
|
342
342
|
version: '1.2'
|
343
343
|
requirements: []
|
344
|
-
rubyforge_project:
|
345
|
-
rubygems_version: 1.8.
|
344
|
+
rubyforge_project: evan
|
345
|
+
rubygems_version: 1.8.6
|
346
346
|
signing_key:
|
347
347
|
specification_version: 3
|
348
348
|
summary: An interface to the libmemcached C client.
|
metadata.gz.sig
CHANGED
Binary file
|