memcached 1.6.0 → 1.6.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/CHANGELOG +2 -0
- data/README.rdoc +1 -1
- data/Rakefile +14 -0
- data/ext/extconf.rb +6 -20
- data/ext/rlibmemcached.i +18 -11
- data/ext/rlibmemcached_wrap.c +1378 -1243
- data/lib/memcached/memcached.rb +7 -7
- data/memcached.gemspec +2 -2
- data/test/unit/memcached_test.rb +31 -4
- metadata +2 -2
- metadata.gz.sig +0 -0
data/lib/memcached/memcached.rb
CHANGED
@@ -486,7 +486,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
486
486
|
|
487
487
|
# Gets a key's value from the server. Accepts a String <tt>key</tt> or array of String <tt>keys</tt>.
|
488
488
|
#
|
489
|
-
# Also accepts a <tt>
|
489
|
+
# Also accepts a <tt>decode</tt> value, which defaults to <tt>true</tt>. Set <tt>decode</tt> to <tt>false</tt> if you want the <tt>value</tt> to be returned directly as a String. Otherwise it will be assumed to be an encoded Ruby object and decoded.
|
490
490
|
#
|
491
491
|
# If you pass a String key, and the key does not exist on the server, <b>Memcached::NotFound</b> will be raised. If you pass an array of keys, memcached's <tt>multiget</tt> mode will be used, and a hash of key/value pairs will be returned. The hash will contain only the keys that were found.
|
492
492
|
#
|
@@ -494,7 +494,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
494
494
|
#
|
495
495
|
# Note that when you rescue Memcached::NotFound exceptions, you should use a the block rescue syntax instead of the inline syntax. Block rescues are very fast, but inline rescues are very slow.
|
496
496
|
#
|
497
|
-
def get(keys,
|
497
|
+
def get(keys, decode=true)
|
498
498
|
if keys.is_a? Array
|
499
499
|
# Multi get
|
500
500
|
ret = Lib.memcached_mget(@struct, keys);
|
@@ -504,13 +504,13 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
504
504
|
value, key, flags, ret = Lib.memcached_fetch_rvalue(@struct)
|
505
505
|
while ret != 21 do # Lib::MEMCACHED_END
|
506
506
|
if ret == 0 # Lib::MEMCACHED_SUCCESS
|
507
|
-
hash[key] =
|
507
|
+
hash[key] = decode ? [value, flags] : value
|
508
508
|
elsif ret != 16 # Lib::MEMCACHED_NOTFOUND
|
509
509
|
check_return_code(ret, key)
|
510
510
|
end
|
511
511
|
value, key, flags, ret = Lib.memcached_fetch_rvalue(@struct)
|
512
512
|
end
|
513
|
-
if
|
513
|
+
if decode
|
514
514
|
hash.each do |key, value_and_flags|
|
515
515
|
hash[key] = @codec.decode(key, *value_and_flags)
|
516
516
|
end
|
@@ -520,7 +520,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
520
520
|
# Single get
|
521
521
|
value, flags, ret = Lib.memcached_get_rvalue(@struct, keys)
|
522
522
|
check_return_code(ret, keys)
|
523
|
-
|
523
|
+
decode ? @codec.decode(keys, value, flags) : value
|
524
524
|
end
|
525
525
|
rescue => e
|
526
526
|
tries ||= 0
|
@@ -539,11 +539,11 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
539
539
|
end
|
540
540
|
|
541
541
|
# Gets a key's value from the previous server. Only useful with random distribution.
|
542
|
-
def get_from_last(key,
|
542
|
+
def get_from_last(key, decode=true)
|
543
543
|
raise ArgumentError, "get_from_last() is not useful unless :random distribution is enabled." unless options[:distribution] == :random
|
544
544
|
value, flags, ret = Lib.memcached_get_from_last_rvalue(@struct, key)
|
545
545
|
check_return_code(ret, key)
|
546
|
-
|
546
|
+
decode ? @codec.decode(key, value, flags) : value
|
547
547
|
end
|
548
548
|
|
549
549
|
### Information methods
|
data/memcached.gemspec
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "memcached"
|
5
|
-
s.version = "1.6.
|
5
|
+
s.version = "1.6.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Evan Weaver"]
|
9
9
|
s.cert_chain = ["/Users/eweaver/cloudburst/configuration/gem_certificates/evan_weaver-original-public_cert.pem"]
|
10
|
-
s.date = "2013-06-
|
10
|
+
s.date = "2013-06-11"
|
11
11
|
s.description = "An interface to the libmemcached C client."
|
12
12
|
s.email = ""
|
13
13
|
s.extensions = ["ext/extconf.rb"]
|
data/test/unit/memcached_test.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
|
2
2
|
require File.expand_path("#{File.dirname(__FILE__)}/../test_helper")
|
3
3
|
|
4
|
+
class NilClass
|
5
|
+
def to_str
|
6
|
+
"nil"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
4
10
|
class MemcachedTest < Test::Unit::TestCase
|
5
11
|
|
6
12
|
def setup
|
@@ -265,6 +271,15 @@ class MemcachedTest < Test::Unit::TestCase
|
|
265
271
|
end
|
266
272
|
end
|
267
273
|
|
274
|
+
def test_get_coerces_string_type
|
275
|
+
assert_raises(Memcached::NotFound) do
|
276
|
+
@cache.get nil
|
277
|
+
end
|
278
|
+
assert_raises(TypeError) do
|
279
|
+
@cache.get 1
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
268
283
|
def test_get_with_server_timeout
|
269
284
|
socket = stub_server 43047
|
270
285
|
cache = Memcached.new("localhost:43047:1", :timeout => 0.5, :exception_retry_limit => 0)
|
@@ -408,9 +423,12 @@ class MemcachedTest < Test::Unit::TestCase
|
|
408
423
|
@cache.get(["#{key}_1"], false))
|
409
424
|
end
|
410
425
|
|
411
|
-
def
|
412
|
-
|
413
|
-
@cache.get
|
426
|
+
def test_get_multi_coerces_string_type
|
427
|
+
assert_nothing_raised do
|
428
|
+
@cache.get [nil]
|
429
|
+
end
|
430
|
+
assert_raises(TypeError) do
|
431
|
+
@cache.get [1]
|
414
432
|
end
|
415
433
|
end
|
416
434
|
|
@@ -522,6 +540,16 @@ class MemcachedTest < Test::Unit::TestCase
|
|
522
540
|
end
|
523
541
|
end
|
524
542
|
|
543
|
+
def test_set_coerces_string_type
|
544
|
+
assert_nothing_raised do
|
545
|
+
@cache.set nil, @value
|
546
|
+
end
|
547
|
+
|
548
|
+
assert_raises(TypeError) do
|
549
|
+
@cache.set 1, @value
|
550
|
+
end
|
551
|
+
end
|
552
|
+
|
525
553
|
def disabled_test_set_retry_on_client_error
|
526
554
|
# FIXME Test passes, but Mocha doesn't restore the original method properly
|
527
555
|
Rlibmemcached.stubs(:memcached_set).raises(Memcached::ClientError)
|
@@ -1342,4 +1370,3 @@ class MemcachedTest < Test::Unit::TestCase
|
|
1342
1370
|
end
|
1343
1371
|
|
1344
1372
|
end
|
1345
|
-
|
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.6.
|
4
|
+
version: 1.6.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
QUMzSFJXWnhJUzFzZm4vU3NxYTdFN29RTWt2NUZBWHIKeDVyS2VQZlhJTmY4
|
37
37
|
WFRKY3prbDlPQkVZZEU5YU5kSnNKcFhEMGFzTGdHVndCSUNTNUJqb2hwNm1p
|
38
38
|
ekpjREMxKwp5WjA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
39
|
-
date: 2013-06-
|
39
|
+
date: 2013-06-11 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
metadata.gz.sig
CHANGED
Binary file
|