cachy 0.2.1 → 0.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/.travis.yml +5 -0
- data/Gemfile +1 -3
- data/Gemfile.lock +17 -17
- data/Rakefile +18 -17
- data/Readme.md +8 -6
- data/cachy.gemspec +10 -69
- data/lib/cachy.rb +4 -2
- data/lib/cachy/version.rb +3 -0
- data/spec/cachy/memcache_timeout_protection_spec.rb +6 -6
- data/spec/cachy/memcached_wrapper_spec.rb +3 -3
- data/spec/cachy/moneta_wrapper_spec.rb +2 -2
- data/spec/cachy/redis_wrapper_spec.rb +6 -4
- data/spec/cachy_spec.rb +12 -4
- data/spec/spec_helper.rb +2 -3
- metadata +14 -64
- data/VERSION +0 -1
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
cachy (0.3.0)
|
5
|
+
mini_memory_store
|
6
|
+
|
1
7
|
GEM
|
2
8
|
remote: http://rubygems.org/
|
3
9
|
specs:
|
4
|
-
diff-lcs (1.1.
|
5
|
-
git (1.2.5)
|
6
|
-
jeweler (1.5.2)
|
7
|
-
bundler (~> 1.0.0)
|
8
|
-
git (>= 1.2.5)
|
9
|
-
rake
|
10
|
+
diff-lcs (1.1.3)
|
10
11
|
mini_memory_store (0.1.0)
|
11
|
-
rake (0.
|
12
|
-
rspec (2.
|
13
|
-
rspec-core (~> 2.
|
14
|
-
rspec-expectations (~> 2.
|
15
|
-
rspec-mocks (~> 2.
|
16
|
-
rspec-core (2.
|
17
|
-
rspec-expectations (2.
|
18
|
-
diff-lcs (~> 1.1.
|
19
|
-
rspec-mocks (2.
|
12
|
+
rake (0.9.2.2)
|
13
|
+
rspec (2.9.0)
|
14
|
+
rspec-core (~> 2.9.0)
|
15
|
+
rspec-expectations (~> 2.9.0)
|
16
|
+
rspec-mocks (~> 2.9.0)
|
17
|
+
rspec-core (2.9.0)
|
18
|
+
rspec-expectations (2.9.0)
|
19
|
+
diff-lcs (~> 1.1.3)
|
20
|
+
rspec-mocks (2.9.0)
|
20
21
|
|
21
22
|
PLATFORMS
|
22
23
|
ruby
|
23
24
|
|
24
25
|
DEPENDENCIES
|
25
|
-
|
26
|
-
mini_memory_store
|
26
|
+
cachy!
|
27
27
|
rake
|
28
28
|
rspec (~> 2)
|
data/Rakefile
CHANGED
@@ -1,21 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
|
3
|
+
task :default do
|
4
|
+
sh "rspec spec/"
|
5
5
|
end
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
7
|
+
# extracted from https://github.com/grosser/project_template
|
8
|
+
rule /^version:bump:.*/ do |t|
|
9
|
+
sh "git status | grep 'nothing to commit'" # ensure we are not dirty
|
10
|
+
index = ['major', 'minor','patch'].index(t.name.split(':').last)
|
11
|
+
file = 'lib/cachy/version.rb'
|
12
|
+
|
13
|
+
version_file = File.read(file)
|
14
|
+
old_version, *version_parts = version_file.match(/(\d+)\.(\d+)\.(\d+)/).to_a
|
15
|
+
version_parts[index] = version_parts[index].to_i + 1
|
16
|
+
version_parts[2] = 0 if index < 2 # remove patch for minor
|
17
|
+
version_parts[1] = 0 if index < 1 # remove minor for major
|
18
|
+
new_version = version_parts * '.'
|
19
|
+
File.open(file,'w'){|f| f.write(version_file.sub(old_version, new_version)) }
|
17
20
|
|
18
|
-
|
19
|
-
rescue LoadError
|
20
|
-
puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
21
|
+
sh "bundle && git add #{file} Gemfile.lock && git commit -m 'bump version to #{new_version}'"
|
21
22
|
end
|
data/Readme.md
CHANGED
@@ -47,7 +47,7 @@ Expire all all caches of one kind when code inside the cache has been updated
|
|
47
47
|
Cachy.cache(:a_key, :witout_locale=>true){ 'German' } == 'English'
|
48
48
|
|
49
49
|
####Caching results of other caches
|
50
|
-
When inner cache is expired outer cache would normally still shows old results
|
50
|
+
When inner cache is expired outer cache would normally still shows old results.<br/>
|
51
51
|
--> expire outer cache when inner cache is expired.
|
52
52
|
|
53
53
|
a = Cachy.cache(:a, :expires_in=>1.day){ expensive() }
|
@@ -62,7 +62,7 @@ In case they get to long for your caching backend, makes them short but unreadab
|
|
62
62
|
Cachy.cache(:a_key, :hash_key=>true){ expensive } # per call
|
63
63
|
|
64
64
|
#### Uses .cache_key when available
|
65
|
-
E.g. ActiveRecord objects are stored in the key with their updated_at timestamp
|
65
|
+
E.g. ActiveRecord objects are stored in the key with their updated_at timestamp.<br/>
|
66
66
|
When they are updated the cache is automatically expired.
|
67
67
|
|
68
68
|
Cachy.cache(:my_key, User.first){ expensive }
|
@@ -96,7 +96,7 @@ Use to cache e.g. Erb output
|
|
96
96
|
<% end %>
|
97
97
|
|
98
98
|
###Cachy.cache_store
|
99
|
-
No ActionController::Base.cache_store
|
99
|
+
No ActionController::Base.cache_store ?<br/>
|
100
100
|
Give me something that responds to read/write(Rails style) or []/store([Moneta](http://github.com/wycats/moneta/tree/master)) or get/set(Memcached)
|
101
101
|
Cachy.cache_store = some_cache
|
102
102
|
|
@@ -117,6 +117,8 @@ Authors
|
|
117
117
|
###Contributors
|
118
118
|
- [mindreframer](http://www.simplewebapp.de/roman)
|
119
119
|
|
120
|
-
[Michael Grosser](http://grosser.it)
|
121
|
-
|
122
|
-
|
120
|
+
[Michael Grosser](http://grosser.it)<br/>
|
121
|
+
michael@grosser.it<br/>
|
122
|
+
License: MIT<br/>
|
123
|
+
[](http://travis-ci.org/grosser/cachy)
|
124
|
+
|
data/cachy.gemspec
CHANGED
@@ -1,72 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
2
|
+
name = "cachy"
|
3
|
+
require "#{name}/version"
|
5
4
|
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.
|
8
|
-
s.version = "0.2.1"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
5
|
+
Gem::Specification.new name, Cachy::VERSION do |s|
|
6
|
+
s.summary = "Caching library for projects that have many processes or many caches"
|
11
7
|
s.authors = ["Michael Grosser"]
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.files =
|
15
|
-
|
16
|
-
|
17
|
-
"Rakefile",
|
18
|
-
"Readme.md",
|
19
|
-
"VERSION",
|
20
|
-
"cachy.gemspec",
|
21
|
-
"lib/cachy.rb",
|
22
|
-
"lib/cachy/memcache_timeout_protection.rb",
|
23
|
-
"lib/cachy/memcached_wrapper.rb",
|
24
|
-
"lib/cachy/moneta_wrapper.rb",
|
25
|
-
"lib/cachy/redis_wrapper.rb",
|
26
|
-
"lib/cachy/wrapper.rb",
|
27
|
-
"spec/cachy/memcache_timeout_protection_spec.rb",
|
28
|
-
"spec/cachy/memcached_wrapper_spec.rb",
|
29
|
-
"spec/cachy/moneta_wrapper_spec.rb",
|
30
|
-
"spec/cachy/redis_wrapper_spec.rb",
|
31
|
-
"spec/cachy_spec.rb",
|
32
|
-
"spec/mem_cache.rb",
|
33
|
-
"spec/spec_helper.rb",
|
34
|
-
"spec/test_cache.rb"
|
35
|
-
]
|
36
|
-
s.homepage = %q{http://github.com/grosser/cachy}
|
37
|
-
s.require_paths = ["lib"]
|
38
|
-
s.rubygems_version = %q{1.6.2}
|
39
|
-
s.summary = %q{Caching library for projects that have many processes or many caches}
|
40
|
-
s.test_files = [
|
41
|
-
"spec/cachy/memcache_timeout_protection_spec.rb",
|
42
|
-
"spec/cachy/memcached_wrapper_spec.rb",
|
43
|
-
"spec/cachy/moneta_wrapper_spec.rb",
|
44
|
-
"spec/cachy/redis_wrapper_spec.rb",
|
45
|
-
"spec/cachy_spec.rb",
|
46
|
-
"spec/mem_cache.rb",
|
47
|
-
"spec/spec_helper.rb",
|
48
|
-
"spec/test_cache.rb"
|
49
|
-
]
|
50
|
-
|
51
|
-
if s.respond_to? :specification_version then
|
52
|
-
s.specification_version = 3
|
53
|
-
|
54
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
55
|
-
s.add_runtime_dependency(%q<mini_memory_store>, [">= 0"])
|
56
|
-
s.add_development_dependency(%q<rake>, [">= 0"])
|
57
|
-
s.add_development_dependency(%q<rspec>, ["~> 2"])
|
58
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
59
|
-
else
|
60
|
-
s.add_dependency(%q<mini_memory_store>, [">= 0"])
|
61
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
62
|
-
s.add_dependency(%q<rspec>, ["~> 2"])
|
63
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
64
|
-
end
|
65
|
-
else
|
66
|
-
s.add_dependency(%q<mini_memory_store>, [">= 0"])
|
67
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
68
|
-
s.add_dependency(%q<rspec>, ["~> 2"])
|
69
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
70
|
-
end
|
8
|
+
s.email = "michael@grosser.it"
|
9
|
+
s.homepage = "http://github.com/grosser/#{name}"
|
10
|
+
s.files = `git ls-files`.split("\n")
|
11
|
+
s.license = "MIT"
|
12
|
+
s.add_runtime_dependency "mini_memory_store"
|
71
13
|
end
|
72
|
-
|
data/lib/cachy.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'mini_memory_store'
|
2
2
|
|
3
|
-
|
3
|
+
module Cachy
|
4
4
|
WHILE_RUNNING_TIMEOUT = 5*60 #seconds
|
5
5
|
KEY_VERSION_TIMEOUT = 30 #seconds
|
6
6
|
HEALTH_CHECK_KEY = 'cachy_healthy'
|
@@ -29,7 +29,7 @@ class Cachy
|
|
29
29
|
cache_store.write key, result, options
|
30
30
|
result
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def self.cache_if(cond, *args, &block)
|
34
34
|
if cond
|
35
35
|
cache(*args, &block)
|
@@ -118,6 +118,8 @@ class Cachy
|
|
118
118
|
def self.cache_store=(cache)
|
119
119
|
@cache_store = wrap_cache(cache)
|
120
120
|
@cache_store.write HEALTH_CHECK_KEY, 'yes'
|
121
|
+
@key_versions_cache_store = nil
|
122
|
+
memory_store.clear
|
121
123
|
end
|
122
124
|
|
123
125
|
def self.cache_store
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
require 'spec/mem_cache'
|
1
|
+
require 'spec_helper'
|
2
|
+
require './spec/mem_cache'
|
3
3
|
require 'cachy/memcache_timeout_protection'
|
4
4
|
|
5
5
|
describe "MemCache timeout protection" do
|
@@ -18,14 +18,14 @@ describe "MemCache timeout protection" do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "catches timeout errors" do
|
21
|
-
MemCache.read_error_callback = lambda{}
|
21
|
+
MemCache.read_error_callback = lambda{|x|}
|
22
22
|
simulate_timeout
|
23
23
|
cache.get('x').should == nil
|
24
24
|
cache.read_error_occurred.should == true
|
25
25
|
end
|
26
26
|
|
27
27
|
it "resets error_occurred to false after successful get" do
|
28
|
-
MemCache.read_error_callback = lambda{}
|
28
|
+
MemCache.read_error_callback = lambda{|x|}
|
29
29
|
simulate_timeout
|
30
30
|
cache.get('x').should == nil
|
31
31
|
cache.stub!(:stubable_cache_get).and_return 1
|
@@ -42,9 +42,9 @@ describe "MemCache timeout protection" do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "calls the callback" do
|
45
|
-
MemCache.read_error_callback = lambda{ 1 }
|
45
|
+
MemCache.read_error_callback = lambda{|x| 1 }
|
46
46
|
simulate_timeout
|
47
47
|
cache.get('x').should == 1
|
48
48
|
cache.read_error_occurred.should == true
|
49
49
|
end
|
50
|
-
end
|
50
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
require 'spec/mem_cache'
|
1
|
+
require 'spec_helper'
|
2
|
+
require './spec/mem_cache'
|
3
3
|
|
4
4
|
describe "Cachy::MemcachedWrapper" do
|
5
5
|
before :all do
|
@@ -34,4 +34,4 @@ describe "Cachy::MemcachedWrapper" do
|
|
34
34
|
@cache.should_receive(:delete).with('x_v1')
|
35
35
|
Cachy.expire(:x)
|
36
36
|
end
|
37
|
-
end
|
37
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
class TestRedis
|
4
4
|
def self.to_s
|
@@ -30,6 +30,8 @@ class TestRedis
|
|
30
30
|
end
|
31
31
|
|
32
32
|
describe "Cachy::RedisWrapper" do
|
33
|
+
let(:yaml_ending) { RUBY_VERSION > '1.9' ? "\n...\n" : "\n" }
|
34
|
+
|
33
35
|
before :all do
|
34
36
|
@cache = TestRedis.new
|
35
37
|
Cachy.cache_store = @cache
|
@@ -49,13 +51,13 @@ describe "Cachy::RedisWrapper" do
|
|
49
51
|
end
|
50
52
|
|
51
53
|
it "can cache without expires" do
|
52
|
-
@cache.should_receive(:set).with('x_v1', "--- SUCCESS
|
54
|
+
@cache.should_receive(:set).with('x_v1', "--- SUCCESS#{yaml_ending}")
|
53
55
|
@cache.should_not_receive(:expire)
|
54
56
|
Cachy.cache(:x){ 'SUCCESS' }.should == 'SUCCESS'
|
55
57
|
end
|
56
58
|
|
57
59
|
it "can cache with expires" do
|
58
|
-
@cache.should_receive(:set).with('x_v1', "--- SUCCESS
|
60
|
+
@cache.should_receive(:set).with('x_v1', "--- SUCCESS#{yaml_ending}")
|
59
61
|
@cache.should_receive(:expire).with('x_v1', 1)
|
60
62
|
Cachy.cache(:x, :expires_in=>1){ 'SUCCESS' }.should == 'SUCCESS'
|
61
63
|
end
|
@@ -64,4 +66,4 @@ describe "Cachy::RedisWrapper" do
|
|
64
66
|
@cache.should_receive(:del).with('x_v1')
|
65
67
|
Cachy.expire(:x)
|
66
68
|
end
|
67
|
-
end
|
69
|
+
end
|
data/spec/cachy_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Cachy do
|
4
4
|
before do
|
@@ -49,7 +49,7 @@ describe Cachy do
|
|
49
49
|
Cachy.cache(:x){ true }.should == true
|
50
50
|
end
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
describe :cache_if do
|
54
54
|
it "should not call the cache command if condition is wrong" do
|
55
55
|
Cachy.should_not_receive(:cache)
|
@@ -57,14 +57,14 @@ describe Cachy do
|
|
57
57
|
"asd"
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
it "should call cache command if condition is true" do
|
62
62
|
Cachy.should_receive(:cache)
|
63
63
|
Cachy.cache_if(true, :x) do
|
64
64
|
"asd"
|
65
65
|
end
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
it "should pass params correctly" do
|
69
69
|
Cachy.should_receive(:cache).with(:x, {:y => 1}, :expires_in => 3)
|
70
70
|
Cachy.cache_if(true, :x, {:y => 1}, :expires_in => 3) do
|
@@ -357,6 +357,14 @@ describe Cachy do
|
|
357
357
|
Cachy.increment_key :x
|
358
358
|
Cachy.key_versions.should == {:x => 2}
|
359
359
|
end
|
360
|
+
|
361
|
+
it "invalidates the cached key_versions_cache_store when a new cache store is used" do
|
362
|
+
key_cache.write(Cachy::KEY_VERSIONS_KEY, :x => 1)
|
363
|
+
Cachy.key_versions_cache_store = key_cache
|
364
|
+
Cachy.key_versions.should == {:x => 1}
|
365
|
+
Cachy.cache_store = @cache
|
366
|
+
Cachy.key_versions.should == {}
|
367
|
+
end
|
360
368
|
end
|
361
369
|
|
362
370
|
describe :delete_key do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cachy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Grosser
|
@@ -15,10 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
19
|
-
default_executable:
|
18
|
+
date: 2012-03-29 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
21
|
+
prerelease: false
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
23
|
none: false
|
24
24
|
requirements:
|
@@ -31,51 +31,8 @@ dependencies:
|
|
31
31
|
type: :runtime
|
32
32
|
name: mini_memory_store
|
33
33
|
version_requirements: *id001
|
34
|
-
prerelease: false
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
hash: 3
|
42
|
-
segments:
|
43
|
-
- 0
|
44
|
-
version: "0"
|
45
|
-
type: :development
|
46
|
-
name: rake
|
47
|
-
version_requirements: *id002
|
48
|
-
prerelease: false
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
|
-
requirements:
|
53
|
-
- - ~>
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
hash: 7
|
56
|
-
segments:
|
57
|
-
- 2
|
58
|
-
version: "2"
|
59
|
-
type: :development
|
60
|
-
name: rspec
|
61
|
-
version_requirements: *id003
|
62
|
-
prerelease: false
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
hash: 3
|
70
|
-
segments:
|
71
|
-
- 0
|
72
|
-
version: "0"
|
73
|
-
type: :development
|
74
|
-
name: jeweler
|
75
|
-
version_requirements: *id004
|
76
|
-
prerelease: false
|
77
34
|
description:
|
78
|
-
email:
|
35
|
+
email: michael@grosser.it
|
79
36
|
executables: []
|
80
37
|
|
81
38
|
extensions: []
|
@@ -83,17 +40,18 @@ extensions: []
|
|
83
40
|
extra_rdoc_files: []
|
84
41
|
|
85
42
|
files:
|
43
|
+
- .travis.yml
|
86
44
|
- Gemfile
|
87
45
|
- Gemfile.lock
|
88
46
|
- Rakefile
|
89
47
|
- Readme.md
|
90
|
-
- VERSION
|
91
48
|
- cachy.gemspec
|
92
49
|
- lib/cachy.rb
|
93
50
|
- lib/cachy/memcache_timeout_protection.rb
|
94
51
|
- lib/cachy/memcached_wrapper.rb
|
95
52
|
- lib/cachy/moneta_wrapper.rb
|
96
53
|
- lib/cachy/redis_wrapper.rb
|
54
|
+
- lib/cachy/version.rb
|
97
55
|
- lib/cachy/wrapper.rb
|
98
56
|
- spec/cachy/memcache_timeout_protection_spec.rb
|
99
57
|
- spec/cachy/memcached_wrapper_spec.rb
|
@@ -103,10 +61,9 @@ files:
|
|
103
61
|
- spec/mem_cache.rb
|
104
62
|
- spec/spec_helper.rb
|
105
63
|
- spec/test_cache.rb
|
106
|
-
has_rdoc: true
|
107
64
|
homepage: http://github.com/grosser/cachy
|
108
|
-
licenses:
|
109
|
-
|
65
|
+
licenses:
|
66
|
+
- MIT
|
110
67
|
post_install_message:
|
111
68
|
rdoc_options: []
|
112
69
|
|
@@ -133,16 +90,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
90
|
requirements: []
|
134
91
|
|
135
92
|
rubyforge_project:
|
136
|
-
rubygems_version: 1.
|
93
|
+
rubygems_version: 1.8.15
|
137
94
|
signing_key:
|
138
95
|
specification_version: 3
|
139
96
|
summary: Caching library for projects that have many processes or many caches
|
140
|
-
test_files:
|
141
|
-
|
142
|
-
- spec/cachy/memcached_wrapper_spec.rb
|
143
|
-
- spec/cachy/moneta_wrapper_spec.rb
|
144
|
-
- spec/cachy/redis_wrapper_spec.rb
|
145
|
-
- spec/cachy_spec.rb
|
146
|
-
- spec/mem_cache.rb
|
147
|
-
- spec/spec_helper.rb
|
148
|
-
- spec/test_cache.rb
|
97
|
+
test_files: []
|
98
|
+
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.1
|