memcached 1.6.0 → 1.6.1
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.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
|