memcache 1.2.13 → 1.3.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/.gitignore +2 -0
- data/.rbenv-gemsets +1 -0
- data/.rbenv-version +1 -0
- data/Gemfile +3 -0
- data/README.rdoc +1 -1
- data/Rakefile +8 -64
- data/VERSION +1 -0
- data/ext/extconf.rb +21 -5
- data/ext/libmemcached-0.51.tar.gz +0 -0
- data/ext/native_server.c +3 -3
- data/lib/memcache.rb +10 -4
- data/lib/memcache/pg_server.rb +4 -2
- data/memcache.gemspec +19 -77
- data/test/memcache_local_server_test.rb +1 -2
- data/test/memcache_native_server_test.rb +1 -2
- data/test/memcache_null_server_test.rb +2 -2
- data/test/memcache_pg_server_test.rb +3 -5
- data/test/memcache_server_test.rb +1 -1
- data/test/memcache_server_test_helper.rb +1 -1
- data/test/memcache_test.rb +25 -0
- data/test/test_helper.rb +1 -1
- metadata +95 -20
- data/VERSION.yml +0 -5
data/.gitignore
CHANGED
data/.rbenv-gemsets
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
memcache
|
data/.rbenv-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ree-1.8.7-2012.02
|
data/Gemfile
ADDED
data/README.rdoc
CHANGED
@@ -120,7 +120,7 @@ alternate backend server implementations. Right now, there are three basic, alte
|
|
120
120
|
duration of a request.
|
121
121
|
|
122
122
|
[+PGServer+] This is an implementation of memcached functionality using SQL. It stores all
|
123
|
-
data in a single postgres table and uses +
|
123
|
+
data in a single postgres table and uses +PGconn+ to select and update this
|
124
124
|
table. This works well as a permanent cache or in the case when your objects
|
125
125
|
are very large. It can also be used in a multi-level cache setup with
|
126
126
|
<tt>Memcache::Server</tt> to provide persistence without sacrificing speed.
|
data/Rakefile
CHANGED
@@ -1,72 +1,16 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "memcache"
|
8
|
-
gem.summary = %Q{Advanced ruby memcache client}
|
9
|
-
gem.description = %Q{Ruby client for memcached supporting advanced protocol features and pluggable architecture.}
|
10
|
-
gem.email = "code@justinbalthrop.com"
|
11
|
-
gem.homepage = "http://github.com/ninjudd/memcache"
|
12
|
-
gem.authors = ["Justin Balthrop"]
|
13
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
14
|
-
end
|
15
|
-
Jeweler::GemcutterTasks.new
|
16
|
-
rescue LoadError
|
17
|
-
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
18
|
-
end
|
19
|
-
|
20
1
|
require 'rake/testtask'
|
21
|
-
|
22
|
-
test.libs << 'lib' << 'test'
|
23
|
-
test.pattern = 'test/**/*_test.rb'
|
24
|
-
test.verbose = true
|
25
|
-
end
|
2
|
+
require 'bundler/gem_tasks'
|
26
3
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
test.pattern = 'test/**/*_test.rb'
|
32
|
-
test.verbose = true
|
33
|
-
end
|
34
|
-
rescue LoadError
|
35
|
-
task :rcov do
|
36
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
37
|
-
end
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.libs = ['lib', 'test']
|
6
|
+
t.pattern = 'test/**/*_test.rb'
|
7
|
+
t.verbose = false
|
38
8
|
end
|
39
9
|
|
40
|
-
task :test =>
|
41
|
-
|
42
|
-
task :default => :test
|
43
|
-
|
44
|
-
task :clean do
|
45
|
-
`rm -rf ext/lib ext/bin ext/share ext/include`
|
46
|
-
end
|
47
|
-
|
48
|
-
require 'rake/rdoctask'
|
49
|
-
Rake::RDocTask.new do |rdoc|
|
50
|
-
if File.exist?('VERSION')
|
51
|
-
version = File.read('VERSION')
|
52
|
-
else
|
53
|
-
version = ""
|
54
|
-
end
|
55
|
-
|
56
|
-
rdoc.rdoc_dir = 'rdoc'
|
57
|
-
rdoc.title = "memcache #{version}"
|
58
|
-
rdoc.rdoc_files.include('README*')
|
59
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
60
|
-
end
|
61
|
-
|
62
|
-
namespace :test => 'lib/memcache/native_server.o' do
|
63
|
-
Rake::TestTask.new(:native) do |t|
|
64
|
-
t.libs << 'test'
|
65
|
-
t.pattern = 'test/memcache_*native_server_test.rb'
|
66
|
-
t.verbose
|
67
|
-
end
|
68
|
-
end
|
10
|
+
task :test => 'lib/memcache/native_server.o'
|
69
11
|
|
70
12
|
file 'lib/memcache/native_server.o' do
|
71
13
|
`cd ext && ruby extconf.rb && make && cp native_server.bundle native_server.o ../lib/memcache/`
|
72
14
|
end
|
15
|
+
|
16
|
+
task :default => :test
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.3.0
|
data/ext/extconf.rb
CHANGED
@@ -40,15 +40,31 @@ if !ENV["EXTERNAL_LIB"]
|
|
40
40
|
system("rm -rf #{BUNDLE_PATH}") unless ENV['DEBUG'] or ENV['DEV']
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
# Absolutely prevent the linker from picking up any other libmemcached
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
if File.exists?("#{HERE}/lib/amd64/libmemcached.a")
|
46
|
+
# fix linking issue under solaris
|
47
|
+
# https://github.com/ninjudd/memcache/issues/5
|
48
|
+
Dir.chdir("#{HERE}/lib/amd64") do
|
49
|
+
system('cp -f libmemcached.a ../libmemcached_gem.a')
|
50
|
+
system('cp -f libmemcached.la ../libmemcached_gem.la')
|
51
|
+
end
|
52
|
+
else
|
53
|
+
Dir.chdir("#{HERE}/lib") do
|
54
|
+
system('cp -f libmemcached.a libmemcached_gem.a')
|
55
|
+
system('cp -f libmemcached.la libmemcached_gem.la')
|
56
|
+
end
|
48
57
|
end
|
49
|
-
|
58
|
+
|
50
59
|
$LIBS << " -lmemcached_gem"
|
51
60
|
end
|
52
61
|
|
62
|
+
# ------------------------------------------------------
|
63
|
+
# thanks to: https://gist.github.com/IanVaughan/5489431
|
53
64
|
$CPPFLAGS += " -DRUBY_19" if RUBY_VERSION =~ /1.9/
|
65
|
+
$CPPFLAGS += " -DRUBY_20" if RUBY_VERSION =~ /2.0/
|
66
|
+
|
67
|
+
puts "*** Using Ruby version: #{RUBY_VERSION}"
|
68
|
+
puts "*** with CPPFLAGS: #{$CPPFLAGS}"
|
69
|
+
# ------------------------------------------------------
|
54
70
|
create_makefile('memcache/native_server')
|
Binary file
|
data/ext/native_server.c
CHANGED
@@ -124,7 +124,7 @@ static VALUE mc_initialize(VALUE self, VALUE opts) {
|
|
124
124
|
memcached_behavior_set(mc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, true);
|
125
125
|
|
126
126
|
if (!NIL_P(prefixv))
|
127
|
-
memcached_callback_set(mc, MEMCACHED_CALLBACK_PREFIX_KEY,
|
127
|
+
memcached_callback_set(mc, MEMCACHED_CALLBACK_PREFIX_KEY, StringValuePtr(prefixv));
|
128
128
|
|
129
129
|
if (!NIL_P(servers_aryv)) {
|
130
130
|
char* server;
|
@@ -152,7 +152,7 @@ static VALUE mc_initialize(VALUE self, VALUE opts) {
|
|
152
152
|
return self;
|
153
153
|
}
|
154
154
|
|
155
|
-
#
|
155
|
+
#if defined(RUBY_19) || defined(RUBY_20)
|
156
156
|
#define RSTRING_SET_LEN(str, newlen) (rb_str_set_len(str, new_len))
|
157
157
|
#else
|
158
158
|
#define RSTRING_SET_LEN(str, newlen) (RSTRING(str)->len = new_len)
|
@@ -555,7 +555,7 @@ VALUE mc_set_prefix(VALUE self, VALUE prefix) {
|
|
555
555
|
result = memcached_callback_set(mc, MEMCACHED_CALLBACK_PREFIX_KEY, NULL);
|
556
556
|
} else {
|
557
557
|
prefix = StringValue(prefix);
|
558
|
-
result = memcached_callback_set(mc, MEMCACHED_CALLBACK_PREFIX_KEY,
|
558
|
+
result = memcached_callback_set(mc, MEMCACHED_CALLBACK_PREFIX_KEY, StringValuePtr(prefix));
|
559
559
|
}
|
560
560
|
return prefix;
|
561
561
|
}
|
data/lib/memcache.rb
CHANGED
@@ -201,12 +201,16 @@ class Memcache
|
|
201
201
|
end
|
202
202
|
|
203
203
|
def incr(key, amount = 1)
|
204
|
+
return decr(key, -amount) if amount < 0
|
205
|
+
|
204
206
|
key = key.to_s
|
205
207
|
backup.incr(key, amount) if backup
|
206
208
|
server(key).incr(key, amount)
|
207
209
|
end
|
208
210
|
|
209
211
|
def decr(key, amount = 1)
|
212
|
+
return incr(key, -amount) if amount < 0
|
213
|
+
|
210
214
|
key = key.to_s
|
211
215
|
backup.decr(key, amount) if backup
|
212
216
|
server(key).decr(key, amount)
|
@@ -260,11 +264,10 @@ class Memcache
|
|
260
264
|
end
|
261
265
|
|
262
266
|
keys_to_fetch = keys - records.keys
|
263
|
-
method = opts[:overwrite] ? :set : :add
|
264
267
|
if keys_to_fetch.any?
|
265
268
|
yield(keys_to_fetch).each do |key, value|
|
266
269
|
begin
|
267
|
-
|
270
|
+
set(key, value, {}) unless opts[:disable] or opts[:disable_write]
|
268
271
|
rescue Memcache::Error => e
|
269
272
|
raise if opts[:strict_write]
|
270
273
|
$stderr.puts "Memcache error in get_some: #{e.class} #{e.to_s} on key '#{key}' while storing value: #{value}"
|
@@ -347,7 +350,7 @@ class Memcache
|
|
347
350
|
end
|
348
351
|
|
349
352
|
def self.init(yaml_file = nil)
|
350
|
-
yaml_file
|
353
|
+
yaml_file ||= File.join(Rails.root, 'config', 'memcached.yml')
|
351
354
|
|
352
355
|
if File.exists?(yaml_file)
|
353
356
|
yaml = YAML.load_file(yaml_file)
|
@@ -361,7 +364,9 @@ class Memcache
|
|
361
364
|
else
|
362
365
|
config.each do |connection, opts|
|
363
366
|
opts = defaults.merge(opts.symbolize_keys)
|
364
|
-
|
367
|
+
if not opts.empty? and not opts[:disabled]
|
368
|
+
Memcache.pool[connection] = Memcache.new(opts)
|
369
|
+
end
|
365
370
|
end
|
366
371
|
end
|
367
372
|
end
|
@@ -421,6 +426,7 @@ protected
|
|
421
426
|
object
|
422
427
|
rescue Exception => e
|
423
428
|
$stderr.puts "Memcache read error: #{e.class} #{e.to_s} on key '#{key}' while unmarshalling value: #{value}"
|
429
|
+
$stderr.puts caller
|
424
430
|
nil
|
425
431
|
end
|
426
432
|
|
data/lib/memcache/pg_server.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
require 'memcache/migration'
|
3
|
+
require 'pg'
|
3
4
|
|
4
5
|
class PGconn
|
5
6
|
def self.quote_ident(name)
|
@@ -36,9 +37,10 @@ class Memcache
|
|
36
37
|
SELECT key, value FROM #{table}
|
37
38
|
WHERE key IN (#{keys}) AND #{prefix_clause} AND #{expiry_clause}
|
38
39
|
}
|
40
|
+
|
39
41
|
results = {}
|
40
|
-
db.query(sql).each do |
|
41
|
-
results[key] = value
|
42
|
+
db.query(sql).each do |row|
|
43
|
+
results[row['key']] = row['value']
|
42
44
|
end
|
43
45
|
results
|
44
46
|
end
|
data/memcache.gemspec
CHANGED
@@ -1,81 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
3
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.name = "memcache"
|
6
|
+
gem.version = IO.read('VERSION')
|
7
|
+
gem.authors = ["Justin Balthrop"]
|
8
|
+
gem.email = ["git@justinbalthrop.com"]
|
9
|
+
gem.description = %q{Ruby client for memcached supporting advanced protocol features and pluggable architecture.}
|
10
|
+
gem.summary = gem.description
|
11
|
+
gem.homepage = "https://github.com/ninjudd/memcache"
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
s.extensions = ["ext/extconf.rb"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE",
|
18
|
-
"README.rdoc"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".gitignore",
|
22
|
-
"LICENSE",
|
23
|
-
"README.rdoc",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION.yml",
|
26
|
-
"bench/benchmark.rb",
|
27
|
-
"ext/LICENSE_AFL3",
|
28
|
-
"ext/extconf.rb",
|
29
|
-
"ext/libmemcached-0.38.tar.gz",
|
30
|
-
"ext/native_server.c",
|
31
|
-
"lib/memcache.rb",
|
32
|
-
"lib/memcache/base.rb",
|
33
|
-
"lib/memcache/local_server.rb",
|
34
|
-
"lib/memcache/migration.rb",
|
35
|
-
"lib/memcache/null_server.rb",
|
36
|
-
"lib/memcache/pg_server.rb",
|
37
|
-
"lib/memcache/segmented.rb",
|
38
|
-
"lib/memcache/server.rb",
|
39
|
-
"memcache.gemspec",
|
40
|
-
"test/memcache_local_server_test.rb",
|
41
|
-
"test/memcache_native_server_test.rb",
|
42
|
-
"test/memcache_null_server_test.rb",
|
43
|
-
"test/memcache_pg_server_test.rb",
|
44
|
-
"test/memcache_segmented_native_server_test.rb",
|
45
|
-
"test/memcache_segmented_server_test.rb",
|
46
|
-
"test/memcache_segmented_test_helper.rb",
|
47
|
-
"test/memcache_server_test.rb",
|
48
|
-
"test/memcache_server_test_helper.rb",
|
49
|
-
"test/memcache_test.rb",
|
50
|
-
"test/test_helper.rb"
|
51
|
-
]
|
52
|
-
s.homepage = %q{http://github.com/ninjudd/memcache}
|
53
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
54
|
-
s.require_paths = ["lib"]
|
55
|
-
s.rubygems_version = %q{1.3.7}
|
56
|
-
s.summary = %q{Advanced ruby memcache client}
|
57
|
-
s.test_files = [
|
58
|
-
"test/memcache_local_server_test.rb",
|
59
|
-
"test/memcache_native_server_test.rb",
|
60
|
-
"test/memcache_null_server_test.rb",
|
61
|
-
"test/memcache_pg_server_test.rb",
|
62
|
-
"test/memcache_segmented_native_server_test.rb",
|
63
|
-
"test/memcache_segmented_server_test.rb",
|
64
|
-
"test/memcache_segmented_test_helper.rb",
|
65
|
-
"test/memcache_server_test.rb",
|
66
|
-
"test/memcache_server_test_helper.rb",
|
67
|
-
"test/memcache_test.rb",
|
68
|
-
"test/test_helper.rb"
|
69
|
-
]
|
13
|
+
gem.add_development_dependency 'rake'
|
14
|
+
gem.add_development_dependency 'shoulda', '3.0.1'
|
15
|
+
gem.add_development_dependency 'mocha'
|
16
|
+
gem.add_development_dependency 'activerecord'
|
17
|
+
gem.add_development_dependency 'activerecord-postgresql-adapter'
|
70
18
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
76
|
-
else
|
77
|
-
end
|
78
|
-
else
|
79
|
-
end
|
19
|
+
gem.files = `git ls-files`.split($/)
|
20
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
21
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
22
|
+
gem.require_paths = ["lib"]
|
80
23
|
end
|
81
|
-
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'memcache/base'
|
3
|
+
require 'memcache/null_server'
|
4
4
|
|
5
5
|
class MemcacheNullServerTest < Test::Unit::TestCase
|
6
6
|
def setup
|
@@ -1,13 +1,11 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require File.dirname(__FILE__) + '/memcache_server_test_helper'
|
4
|
-
require File.dirname(__FILE__) + '/../lib/memcache/pg_server'
|
1
|
+
require 'memcache_server_test_helper'
|
2
|
+
require 'memcache/pg_server'
|
5
3
|
|
6
4
|
class MemcachePGServerTest < Test::Unit::TestCase
|
7
5
|
ActiveRecord::Base.establish_connection(
|
8
6
|
:adapter => "postgresql",
|
9
7
|
:host => "localhost",
|
10
|
-
:username =>
|
8
|
+
:username => `whoami`.chomp,
|
11
9
|
:password => "",
|
12
10
|
:database => "memcache_test"
|
13
11
|
)
|
data/test/memcache_test.rb
CHANGED
@@ -157,6 +157,31 @@ class MemcacheTest < Test::Unit::TestCase
|
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
160
|
+
def test_get_some_with_validation
|
161
|
+
100.times do |i|
|
162
|
+
m.set(i.to_s, i.odd? ? -i : i)
|
163
|
+
end
|
164
|
+
keys = (0...100).collect {|key| key.to_s}
|
165
|
+
|
166
|
+
results = m.get_some(keys, :validation => lambda {|k,v| k.to_i == v}) do |missing_keys|
|
167
|
+
assert_equal 50, missing_keys.size
|
168
|
+
r = {}
|
169
|
+
missing_keys.each do |key|
|
170
|
+
r[key] = key.to_i
|
171
|
+
end
|
172
|
+
r
|
173
|
+
end
|
174
|
+
assert_equal 100, results.size
|
175
|
+
|
176
|
+
results.each do |key, value|
|
177
|
+
assert_equal key.to_i, value
|
178
|
+
end
|
179
|
+
|
180
|
+
results = m.get_some(keys, :validation => lambda {|k,v| k.to_i == v}) do |missing_keys|
|
181
|
+
flunk "no values should be invalid"
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
160
185
|
def test_get_with_reset_expiry
|
161
186
|
m.add('foo', 'quick brown fox', :expiry => 1)
|
162
187
|
assert_equal 'quick brown fox', m.get('foo', :expiry => 2)
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memcache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 1.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Justin Balthrop
|
@@ -15,29 +15,104 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-06-03 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rake
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: shoulda
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - "="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 5
|
44
|
+
segments:
|
45
|
+
- 3
|
46
|
+
- 0
|
47
|
+
- 1
|
48
|
+
version: 3.0.1
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: mocha
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: activerecord
|
67
|
+
prerelease: false
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
type: :development
|
78
|
+
version_requirements: *id004
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: activerecord-postgresql-adapter
|
81
|
+
prerelease: false
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
hash: 3
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
version: "0"
|
91
|
+
type: :development
|
92
|
+
version_requirements: *id005
|
22
93
|
description: Ruby client for memcached supporting advanced protocol features and pluggable architecture.
|
23
|
-
email:
|
94
|
+
email:
|
95
|
+
- git@justinbalthrop.com
|
24
96
|
executables: []
|
25
97
|
|
26
|
-
extensions:
|
27
|
-
|
28
|
-
extra_rdoc_files:
|
29
|
-
|
30
|
-
- README.rdoc
|
98
|
+
extensions: []
|
99
|
+
|
100
|
+
extra_rdoc_files: []
|
101
|
+
|
31
102
|
files:
|
32
103
|
- .gitignore
|
104
|
+
- .rbenv-gemsets
|
105
|
+
- .rbenv-version
|
106
|
+
- Gemfile
|
33
107
|
- LICENSE
|
34
108
|
- README.rdoc
|
35
109
|
- Rakefile
|
36
|
-
- VERSION
|
110
|
+
- VERSION
|
37
111
|
- bench/benchmark.rb
|
38
112
|
- ext/LICENSE_AFL3
|
39
113
|
- ext/extconf.rb
|
40
114
|
- ext/libmemcached-0.38.tar.gz
|
115
|
+
- ext/libmemcached-0.51.tar.gz
|
41
116
|
- ext/native_server.c
|
42
117
|
- lib/memcache.rb
|
43
118
|
- lib/memcache/base.rb
|
@@ -60,12 +135,12 @@ files:
|
|
60
135
|
- test/memcache_test.rb
|
61
136
|
- test/test_helper.rb
|
62
137
|
has_rdoc: true
|
63
|
-
homepage:
|
138
|
+
homepage: https://github.com/ninjudd/memcache
|
64
139
|
licenses: []
|
65
140
|
|
66
141
|
post_install_message:
|
67
|
-
rdoc_options:
|
68
|
-
|
142
|
+
rdoc_options: []
|
143
|
+
|
69
144
|
require_paths:
|
70
145
|
- lib
|
71
146
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -89,10 +164,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
164
|
requirements: []
|
90
165
|
|
91
166
|
rubyforge_project:
|
92
|
-
rubygems_version: 1.
|
167
|
+
rubygems_version: 1.5.2
|
93
168
|
signing_key:
|
94
169
|
specification_version: 3
|
95
|
-
summary:
|
170
|
+
summary: Ruby client for memcached supporting advanced protocol features and pluggable architecture.
|
96
171
|
test_files:
|
97
172
|
- test/memcache_local_server_test.rb
|
98
173
|
- test/memcache_native_server_test.rb
|