rails_redis_cache 0.1.0 → 0.2.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/.document +4 -0
- data/.gitignore +6 -0
- data/.rvmrc +1 -0
- data/.travis.yml +13 -0
- data/CHANGELOG +6 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +41 -0
- data/LICENSE +4 -0
- data/README.rdoc +9 -2
- data/lib/rails_redis_cache.rb +2 -102
- data/lib/rails_redis_cache/rails_redis_cache_store.rb +101 -0
- data/lib/rails_redis_cache/version.rb +3 -0
- data/rails_redis_cache.gemspec +29 -0
- data/rakefile.rb +11 -0
- data/spec/rails_redis_cache/rails_redis_cache_store_spec.rb +105 -0
- data/{test/test_helper.rb → spec/spec_helper.rb} +3 -1
- metadata +61 -32
- data/test/test_rails_redis_cache.rb +0 -109
data/.document
ADDED
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.3@rails_redis_cache --create
|
data/.travis.yml
ADDED
data/CHANGELOG
CHANGED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
rails_redis_cache (0.2.0)
|
5
|
+
activesupport (~> 3.1)
|
6
|
+
i18n (~> 0.6)
|
7
|
+
redis (~> 2.0)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: http://rubygems.org/
|
11
|
+
specs:
|
12
|
+
activesupport (3.1.3)
|
13
|
+
multi_json (~> 1.0)
|
14
|
+
diff-lcs (1.1.3)
|
15
|
+
fuubar (0.0.6)
|
16
|
+
rspec (~> 2.0)
|
17
|
+
rspec-instafail (~> 0.1.8)
|
18
|
+
ruby-progressbar (~> 0.0.10)
|
19
|
+
i18n (0.6.0)
|
20
|
+
multi_json (1.0.3)
|
21
|
+
rake (0.9.2.2)
|
22
|
+
redis (2.2.2)
|
23
|
+
rspec (2.7.0)
|
24
|
+
rspec-core (~> 2.7.0)
|
25
|
+
rspec-expectations (~> 2.7.0)
|
26
|
+
rspec-mocks (~> 2.7.0)
|
27
|
+
rspec-core (2.7.1)
|
28
|
+
rspec-expectations (2.7.0)
|
29
|
+
diff-lcs (~> 1.1.2)
|
30
|
+
rspec-instafail (0.1.9)
|
31
|
+
rspec-mocks (2.7.0)
|
32
|
+
ruby-progressbar (0.0.10)
|
33
|
+
|
34
|
+
PLATFORMS
|
35
|
+
ruby
|
36
|
+
|
37
|
+
DEPENDENCIES
|
38
|
+
fuubar (~> 0.0.6)
|
39
|
+
rails_redis_cache!
|
40
|
+
rake (~> 0.9)
|
41
|
+
rspec (~> 2.7)
|
data/LICENSE
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
"THE BEER-WARE LICENSE" (Revision 42):
|
2
|
+
ps@nofail.de[mailto:ps@nofail.de] wrote this file. As long as you retain this notice you
|
3
|
+
can do whatever you want with this stuff. If we meet some day, and you think
|
4
|
+
this stuff is worth it, you can buy me a beer in return Peter Schröder
|
data/README.rdoc
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
== About
|
2
2
|
|
3
|
+
Status: http://stillmaintained.com/phoet/rails_redis_cache.png
|
4
|
+
Build: http://travis-ci.org/phoet/rails_redis_cache.png
|
5
|
+
|
3
6
|
Cache store implementation for Rails 3.1 using the key value store Redis[http://code.google.com/p/redis].
|
4
7
|
|
5
8
|
If you are looking for Rails 3 implementation please have a look at latest stable release version 0.0.4.
|
@@ -8,11 +11,11 @@ If you are looking for Rails 3 implementation please have a look at latest stabl
|
|
8
11
|
|
9
12
|
In the environment.rb or environments-files write:
|
10
13
|
|
11
|
-
ActionController::Base.cache_store = ActiveSupport::Cache::
|
14
|
+
ActionController::Base.cache_store = ActiveSupport::Cache::RailsRedisCacheStore.new(:url => ENV['RAILS_REDIS_CACHE_URL'])
|
12
15
|
|
13
16
|
... or ...
|
14
17
|
|
15
|
-
config.cache_store = ActiveSupport::Cache::
|
18
|
+
config.cache_store = ActiveSupport::Cache::RailsRedisCacheStore.new(:url => ENV['RAILS_REDIS_CACHE_URL'])
|
16
19
|
|
17
20
|
Using the cache is simple:
|
18
21
|
|
@@ -28,3 +31,7 @@ Using a local Redis server for testing is simple:
|
|
28
31
|
== Changelog
|
29
32
|
|
30
33
|
See CHANGELOG file for further information.
|
34
|
+
|
35
|
+
== License
|
36
|
+
|
37
|
+
See LICENSE file for further information.
|
data/lib/rails_redis_cache.rb
CHANGED
@@ -1,102 +1,2 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require 'redis'
|
4
|
-
require 'time'
|
5
|
-
|
6
|
-
module ActiveSupport
|
7
|
-
module Cache
|
8
|
-
|
9
|
-
# RailsRedisCache is Rails 3 cache store implementation using the key value store Redis.
|
10
|
-
#
|
11
|
-
# Author:: Peter Schröder (mailto:phoetmail@googlemail.com)
|
12
|
-
#
|
13
|
-
# ==Usage
|
14
|
-
#
|
15
|
-
# Add the gem to your Gemfile
|
16
|
-
#
|
17
|
-
# gem "rails_redis_cache"
|
18
|
-
#
|
19
|
-
# and configure the cache store
|
20
|
-
#
|
21
|
-
# config.cache_store = ActiveSupport::Cache::RailsRedisCache.new(:url => ENV['RAILS_REDIS_CACHE_URL'])
|
22
|
-
#
|
23
|
-
class RailsRedisCache < Store
|
24
|
-
|
25
|
-
TIME_PREF = "rails_redis_cache_time"
|
26
|
-
VALUE_PREF = "rails_redis_cache_value"
|
27
|
-
|
28
|
-
attr_reader :redis
|
29
|
-
|
30
|
-
# Initializes the cache store and opens a connection to Redis.
|
31
|
-
#
|
32
|
-
# ActiveSupport::Cache::RailsRedisCache.new(:url => ENV['RAILS_REDIS_CACHE_URL'])
|
33
|
-
#
|
34
|
-
# ==== Options:
|
35
|
-
#
|
36
|
-
# [url] the url to the Redis instance
|
37
|
-
#
|
38
|
-
# ==== More Options:
|
39
|
-
#
|
40
|
-
# Have a look at redis-rb and Rails docs for further options
|
41
|
-
#
|
42
|
-
def initialize(options={})
|
43
|
-
super(options)
|
44
|
-
@redis = Redis.connect(options)
|
45
|
-
end
|
46
|
-
|
47
|
-
# ============================= optional store impl ==============================
|
48
|
-
|
49
|
-
def delete_matched(matcher, options = nil)
|
50
|
-
@redis.keys("#{VALUE_PREF}_*").map{|key| key[(VALUE_PREF.size + 1)..-1] }.grep(matcher).each do |key|
|
51
|
-
delete_entry(key, options)
|
52
|
-
end.size
|
53
|
-
end
|
54
|
-
|
55
|
-
def increment(name, amount = 1, options = nil)
|
56
|
-
write(name, amount + read(name, options).to_i, options)
|
57
|
-
end
|
58
|
-
|
59
|
-
def decrement(name, amount = 1, options = nil)
|
60
|
-
increment(name, amount * -1, options)
|
61
|
-
end
|
62
|
-
|
63
|
-
def cleanup(options = nil)
|
64
|
-
value_keys = @redis.keys("#{VALUE_PREF}_*")
|
65
|
-
time_keys = @redis.keys("#{TIME_PREF}_*")
|
66
|
-
@redis.del *(value_keys + time_keys)
|
67
|
-
end
|
68
|
-
|
69
|
-
def clear(options = nil)
|
70
|
-
cleanup(options)
|
71
|
-
end
|
72
|
-
|
73
|
-
# ============================= basic store impl ==============================
|
74
|
-
|
75
|
-
protected
|
76
|
-
|
77
|
-
def read_entry(key, options)
|
78
|
-
raw_value = @redis.get "#{VALUE_PREF}_#{key}"
|
79
|
-
return nil unless raw_value
|
80
|
-
|
81
|
-
raw_time = @redis.get("#{TIME_PREF}_#{key}")
|
82
|
-
time = raw_time.nil? ? nil : Time.parse(raw_time)
|
83
|
-
value = Marshal.load(Base64.decode64(raw_value))
|
84
|
-
ActiveSupport::Cache::Entry.create value, time
|
85
|
-
end
|
86
|
-
|
87
|
-
def write_entry(key, entry, options)
|
88
|
-
value = Base64.encode64(Marshal.dump(entry.value))
|
89
|
-
time = Time.now
|
90
|
-
@redis.mset "#{VALUE_PREF}_#{key}", value, "#{TIME_PREF}_#{key}", time
|
91
|
-
return unless expiry = options[:expires_in]
|
92
|
-
@redis.expire "#{VALUE_PREF}_#{key}", expiry
|
93
|
-
@redis.expire "#{TIME_PREF}_#{key}", expiry
|
94
|
-
end
|
95
|
-
|
96
|
-
def delete_entry(key, options)
|
97
|
-
@redis.del "#{VALUE_PREF}_#{key}", "#{TIME_PREF}_#{key}"
|
98
|
-
end
|
99
|
-
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
1
|
+
require 'rails_redis_cache/rails_redis_cache_store'
|
2
|
+
require 'rails_redis_cache/version'
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'base64'
|
3
|
+
require 'redis'
|
4
|
+
require 'time'
|
5
|
+
|
6
|
+
module ActiveSupport
|
7
|
+
module Cache
|
8
|
+
|
9
|
+
# RailsRedisCache is Rails 3 cache store implementation using the key value store Redis.
|
10
|
+
#
|
11
|
+
# Author:: Peter Schröder (mailto:phoetmail@googlemail.com)
|
12
|
+
#
|
13
|
+
# ==Usage
|
14
|
+
#
|
15
|
+
# Add the gem to your Gemfile
|
16
|
+
#
|
17
|
+
# gem "rails_redis_cache"
|
18
|
+
#
|
19
|
+
# and configure the cache store
|
20
|
+
#
|
21
|
+
# config.cache_store = ActiveSupport::Cache::RailsRedisCacheStore.new(:url => ENV['RAILS_REDIS_CACHE_URL'])
|
22
|
+
#
|
23
|
+
class RailsRedisCacheStore < Store
|
24
|
+
|
25
|
+
TIME_PREF = "rails_redis_cache_time"
|
26
|
+
VALUE_PREF = "rails_redis_cache_value"
|
27
|
+
|
28
|
+
attr_reader :redis
|
29
|
+
|
30
|
+
# Initializes the cache store and opens a connection to Redis.
|
31
|
+
#
|
32
|
+
# ActiveSupport::Cache::RailsRedisCacheStore.new(:url => ENV['RAILS_REDIS_CACHE_URL'])
|
33
|
+
#
|
34
|
+
# ==== Options:
|
35
|
+
#
|
36
|
+
# [url] the url to the Redis instance
|
37
|
+
#
|
38
|
+
# ==== More Options:
|
39
|
+
#
|
40
|
+
# Have a look at redis-rb and Rails docs for further options
|
41
|
+
#
|
42
|
+
def initialize(options={})
|
43
|
+
super(options)
|
44
|
+
@redis = Redis.connect(options)
|
45
|
+
end
|
46
|
+
|
47
|
+
# ============================= optional store impl ==============================
|
48
|
+
|
49
|
+
def delete_matched(matcher, options = nil)
|
50
|
+
@redis.keys("#{VALUE_PREF}_*").map{|key| key[(VALUE_PREF.size + 1)..-1] }.grep(matcher).each do |key|
|
51
|
+
delete_entry(key, options)
|
52
|
+
end.size
|
53
|
+
end
|
54
|
+
|
55
|
+
def increment(name, amount = 1, options = nil)
|
56
|
+
write(name, amount + read(name, options).to_i, options)
|
57
|
+
end
|
58
|
+
|
59
|
+
def decrement(name, amount = 1, options = nil)
|
60
|
+
increment(name, amount * -1, options)
|
61
|
+
end
|
62
|
+
|
63
|
+
def cleanup(options = nil)
|
64
|
+
value_keys = @redis.keys("#{VALUE_PREF}_*")
|
65
|
+
time_keys = @redis.keys("#{TIME_PREF}_*")
|
66
|
+
@redis.del(*(value_keys + time_keys))
|
67
|
+
end
|
68
|
+
|
69
|
+
def clear(options = nil)
|
70
|
+
cleanup(options)
|
71
|
+
end
|
72
|
+
|
73
|
+
# ============================= basic store impl ==============================
|
74
|
+
|
75
|
+
protected()
|
76
|
+
|
77
|
+
def read_entry(key, options)
|
78
|
+
raw_value = @redis.get "#{VALUE_PREF}_#{key}"
|
79
|
+
return nil unless raw_value
|
80
|
+
|
81
|
+
raw_time = @redis.get("#{TIME_PREF}_#{key}")
|
82
|
+
time = raw_time.nil? ? nil : Time.parse(raw_time)
|
83
|
+
value = Marshal.load(Base64.decode64(raw_value))
|
84
|
+
ActiveSupport::Cache::Entry.create value, time
|
85
|
+
end
|
86
|
+
|
87
|
+
def write_entry(key, entry, options)
|
88
|
+
value = Base64.encode64(Marshal.dump(entry.value))
|
89
|
+
time = Time.now
|
90
|
+
@redis.mset "#{VALUE_PREF}_#{key}", value, "#{TIME_PREF}_#{key}", time
|
91
|
+
return unless expiry = options[:expires_in]
|
92
|
+
@redis.expire "#{VALUE_PREF}_#{key}", expiry
|
93
|
+
@redis.expire "#{TIME_PREF}_#{key}", expiry
|
94
|
+
end
|
95
|
+
|
96
|
+
def delete_entry(key, options)
|
97
|
+
@redis.del "#{VALUE_PREF}_#{key}", "#{TIME_PREF}_#{key}"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "rails_redis_cache/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "rails_redis_cache"
|
7
|
+
s.version = RailsRedisCache::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ['Peter Schröder']
|
10
|
+
s.email = ['phoetmail@googlemail.com']
|
11
|
+
s.homepage = 'http://github.com/phoet/rails_redis_cache'
|
12
|
+
s.summary = 'Simple interface to AWS Lookup, Search and Cart operations.'
|
13
|
+
s.description = 'Rails 3.1 cache store implementation using Redis. See http://github.com/phoet/rails_redis_cache for more information.'
|
14
|
+
|
15
|
+
s.rubyforge_project = "rails_redis_cache"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_dependency('activesupport', '~> 3.1')
|
23
|
+
s.add_dependency('i18n', '~> 0.6')
|
24
|
+
s.add_dependency('redis', '~> 2.0')
|
25
|
+
|
26
|
+
s.add_development_dependency('rake', '~> 0.9')
|
27
|
+
s.add_development_dependency('rspec', '~> 2.7')
|
28
|
+
s.add_development_dependency('fuubar', '~> 0.0.6')
|
29
|
+
end
|
data/rakefile.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe ActiveSupport::Cache::RailsRedisCacheStore do
|
4
|
+
before(:each) do
|
5
|
+
ActiveSupport::Cache::RailsRedisCacheStore.logger = Logger.new(STDOUT)
|
6
|
+
@cache = ActiveSupport::Cache::RailsRedisCacheStore.new(:url => ENV['RAILS_REDIS_CACHE_URL'])
|
7
|
+
@cache.redis.flushdb
|
8
|
+
@value = "entry"
|
9
|
+
@key = "key"
|
10
|
+
@options = {:option => 'any'}
|
11
|
+
end
|
12
|
+
|
13
|
+
it "test_delete_no_error" do
|
14
|
+
@cache.delete(@key, @options)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "test_write_no_error" do
|
18
|
+
@cache.write(@key, @value, @options)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "test_read_no_error" do
|
22
|
+
@cache.read(@key, @options)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "test_read_write" do
|
26
|
+
@cache.delete(@key, @options)
|
27
|
+
@cache.read(@key, @options).should be_nil
|
28
|
+
@cache.write(@key, @value, @options)
|
29
|
+
@cache.read(@key, @options).should eql(@value)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "test_expires_in" do
|
33
|
+
@cache.write(@key, @value, :expires_in=>2.seconds)
|
34
|
+
@cache.read(@key, @options).should eql(@value)
|
35
|
+
sleep(3)
|
36
|
+
@cache.read(@key, @options).should be_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
it "test_fetch" do
|
40
|
+
count = 0
|
41
|
+
@cache.fetch(@key, :expires_in=>3.seconds) {count += 1}
|
42
|
+
@cache.fetch(@key) {count += 1}
|
43
|
+
@cache.fetch(@key) {count += 1}
|
44
|
+
count.should be(1)
|
45
|
+
@cache.delete(@key)
|
46
|
+
@cache.fetch(@key, :expires_in=>0.seconds) {count += 1}
|
47
|
+
count.should be(2)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "test_fetch_with_proc" do
|
51
|
+
@cache.fetch(@key, @options, &lambda{@value})
|
52
|
+
end
|
53
|
+
|
54
|
+
it "test_fetch_with_array" do
|
55
|
+
@cache.fetch(@key, @options){[@value]}
|
56
|
+
@cache.fetch(@key, @options).should eql([@value])
|
57
|
+
end
|
58
|
+
|
59
|
+
it "test_delete_matched" do
|
60
|
+
@cache.write('aaaa', @value, @options)
|
61
|
+
@cache.write('aaa', @value, @options)
|
62
|
+
@cache.write('aa', @value, @options)
|
63
|
+
@cache.delete_matched(/aa+/, @options).should be(3)
|
64
|
+
@cache.read('aaaa', @options).should be_nil
|
65
|
+
@cache.read('aaa', @options).should be_nil
|
66
|
+
@cache.read('aa', @options).should be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
it "test_create_exist?" do
|
70
|
+
@cache.write(@key, @value, @options)
|
71
|
+
@cache.exist?(@key, @options).should be_true
|
72
|
+
end
|
73
|
+
|
74
|
+
it "test_delete_exists" do
|
75
|
+
@cache.write(@key, @value, @options)
|
76
|
+
@cache.delete(@key, @options)
|
77
|
+
@cache.exist?(@key, @options).should be_false
|
78
|
+
end
|
79
|
+
|
80
|
+
it "test_increment" do
|
81
|
+
@cache.write(@key, 1)
|
82
|
+
@cache.read(@key).should eql(1)
|
83
|
+
@cache.increment(@key)
|
84
|
+
@cache.read(@key).should eql(2)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "test_decrement" do
|
88
|
+
@cache.write(@key, 1)
|
89
|
+
@cache.read(@key).should be(1)
|
90
|
+
@cache.decrement(@key)
|
91
|
+
@cache.read(@key).should be(0)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "test_cleanup" do
|
95
|
+
@cache.write(@key, @value)
|
96
|
+
@cache.cleanup
|
97
|
+
@cache.redis.dbsize.should be(0)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "test_edge_case_with_missing_time_key" do
|
101
|
+
@cache.write(@key, @value)
|
102
|
+
@cache.redis.del "#{ActiveSupport::Cache::RailsRedisCacheStore::TIME_PREF}_#{@key}"
|
103
|
+
@cache.read(@key).should eql(@value)
|
104
|
+
end
|
105
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_redis_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,72 +9,102 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
13
|
-
default_executable:
|
12
|
+
date: 2011-12-14 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: activesupport
|
17
|
-
requirement: &
|
16
|
+
requirement: &2159856240 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ~>
|
21
20
|
- !ruby/object:Gem::Version
|
22
|
-
version: 3.1
|
21
|
+
version: '3.1'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *2159856240
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
26
|
name: i18n
|
28
|
-
requirement: &
|
27
|
+
requirement: &2159855740 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ~>
|
32
31
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.6
|
32
|
+
version: '0.6'
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
35
|
+
version_requirements: *2159855740
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
37
|
name: redis
|
39
|
-
requirement: &
|
38
|
+
requirement: &2159855280 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
41
|
- - ~>
|
43
42
|
- !ruby/object:Gem::Version
|
44
|
-
version: 2.0
|
43
|
+
version: '2.0'
|
45
44
|
type: :runtime
|
46
45
|
prerelease: false
|
47
|
-
version_requirements: *
|
46
|
+
version_requirements: *2159855280
|
48
47
|
- !ruby/object:Gem::Dependency
|
49
48
|
name: rake
|
50
|
-
requirement: &
|
49
|
+
requirement: &2159854820 !ruby/object:Gem::Requirement
|
51
50
|
none: false
|
52
51
|
requirements:
|
53
52
|
- - ~>
|
54
53
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.9
|
54
|
+
version: '0.9'
|
56
55
|
type: :development
|
57
56
|
prerelease: false
|
58
|
-
version_requirements: *
|
59
|
-
|
60
|
-
|
57
|
+
version_requirements: *2159854820
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rspec
|
60
|
+
requirement: &2159854360 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '2.7'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2159854360
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: fuubar
|
71
|
+
requirement: &2159853900 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.0.6
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2159853900
|
80
|
+
description: Rails 3.1 cache store implementation using Redis. See http://github.com/phoet/rails_redis_cache
|
81
|
+
for more information.
|
82
|
+
email:
|
83
|
+
- phoetmail@googlemail.com
|
61
84
|
executables: []
|
62
85
|
extensions: []
|
63
86
|
extra_rdoc_files: []
|
64
87
|
files:
|
65
|
-
-
|
66
|
-
-
|
88
|
+
- .document
|
89
|
+
- .gitignore
|
90
|
+
- .rvmrc
|
91
|
+
- .travis.yml
|
67
92
|
- CHANGELOG
|
68
|
-
-
|
69
|
-
-
|
70
|
-
|
93
|
+
- Gemfile
|
94
|
+
- Gemfile.lock
|
95
|
+
- LICENSE
|
96
|
+
- README.rdoc
|
97
|
+
- lib/rails_redis_cache.rb
|
98
|
+
- lib/rails_redis_cache/rails_redis_cache_store.rb
|
99
|
+
- lib/rails_redis_cache/version.rb
|
100
|
+
- rails_redis_cache.gemspec
|
101
|
+
- rakefile.rb
|
102
|
+
- spec/rails_redis_cache/rails_redis_cache_store_spec.rb
|
103
|
+
- spec/spec_helper.rb
|
71
104
|
homepage: http://github.com/phoet/rails_redis_cache
|
72
105
|
licenses: []
|
73
106
|
post_install_message:
|
74
|
-
rdoc_options:
|
75
|
-
- -a
|
76
|
-
- --inline-source
|
77
|
-
- --charset=UTF-8
|
107
|
+
rdoc_options: []
|
78
108
|
require_paths:
|
79
109
|
- lib
|
80
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -90,12 +120,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
120
|
- !ruby/object:Gem::Version
|
91
121
|
version: '0'
|
92
122
|
requirements: []
|
93
|
-
rubyforge_project:
|
94
|
-
rubygems_version: 1.
|
123
|
+
rubyforge_project: rails_redis_cache
|
124
|
+
rubygems_version: 1.8.10
|
95
125
|
signing_key:
|
96
126
|
specification_version: 3
|
97
|
-
summary:
|
98
|
-
for more information.
|
127
|
+
summary: Simple interface to AWS Lookup, Search and Cart operations.
|
99
128
|
test_files:
|
100
|
-
-
|
101
|
-
-
|
129
|
+
- spec/rails_redis_cache/rails_redis_cache_store_spec.rb
|
130
|
+
- spec/spec_helper.rb
|
@@ -1,109 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'rails_redis_cache'
|
3
|
-
require 'logger'
|
4
|
-
|
5
|
-
class TestRailsRedisCache < Test::Unit::TestCase
|
6
|
-
|
7
|
-
def setup
|
8
|
-
ActiveSupport::Cache::RailsRedisCache.logger = Logger.new(STDOUT)
|
9
|
-
@cache = ActiveSupport::Cache::RailsRedisCache.new(:url => ENV['RAILS_REDIS_CACHE_URL'])
|
10
|
-
@cache.redis.flushdb
|
11
|
-
@value = "entry"
|
12
|
-
@key = "key"
|
13
|
-
@options = {:option => 'any'}
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_delete_no_error
|
17
|
-
@cache.delete(@key, @options)
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_write_no_error
|
21
|
-
@cache.write(@key, @value, @options)
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_read_no_error
|
25
|
-
@cache.read(@key, @options)
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_read_write
|
29
|
-
@cache.delete(@key, @options)
|
30
|
-
assert_nil(@cache.read(@key, @options))
|
31
|
-
@cache.write(@key, @value, @options)
|
32
|
-
assert_equal(@value, @cache.read(@key, @options))
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_expires_in
|
36
|
-
@cache.write(@key, @value, :expires_in=>2.seconds)
|
37
|
-
assert_equal(@value, @cache.read(@key, @options))
|
38
|
-
sleep(3)
|
39
|
-
assert_nil(@cache.read(@key, @options))
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_fetch
|
43
|
-
count = 0
|
44
|
-
@cache.fetch(@key, :expires_in=>3.seconds) {count += 1}
|
45
|
-
@cache.fetch(@key) {count += 1}
|
46
|
-
@cache.fetch(@key) {count += 1}
|
47
|
-
assert_equal(count, 1)
|
48
|
-
@cache.delete(@key)
|
49
|
-
@cache.fetch(@key, :expires_in=>0.seconds) {count += 1}
|
50
|
-
assert_equal(count, 2)
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_fetch_with_proc
|
54
|
-
@cache.fetch(@key, @options, &lambda{@value})
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_fetch_with_array
|
58
|
-
@cache.fetch(@key, @options){[@value]}
|
59
|
-
assert_equal([@value], @cache.fetch(@key, @options))
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_delete_matched
|
63
|
-
@cache.write('aaaa', @value, @options)
|
64
|
-
@cache.write('aaa', @value, @options)
|
65
|
-
@cache.write('aa', @value, @options)
|
66
|
-
assert_equal(3, @cache.delete_matched(/aa+/, @options))
|
67
|
-
assert_nil(@cache.read('aaaa', @options))
|
68
|
-
assert_nil(@cache.read('aaa', @options))
|
69
|
-
assert_nil(@cache.read('aa', @options))
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_create_exist?
|
73
|
-
@cache.write(@key, @value, @options)
|
74
|
-
assert_equal(true, @cache.exist?(@key, @options))
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_delete_exists
|
78
|
-
@cache.write(@key, @value, @options)
|
79
|
-
@cache.delete(@key, @options)
|
80
|
-
assert_equal(false, @cache.exist?(@key, @options))
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_increment
|
84
|
-
@cache.write(@key, 1)
|
85
|
-
assert_equal(1, @cache.read(@key).to_i)
|
86
|
-
@cache.increment(@key)
|
87
|
-
assert_equal(2, @cache.read(@key).to_i)
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_decrement
|
91
|
-
@cache.write(@key, 1)
|
92
|
-
assert_equal(1, @cache.read(@key).to_i)
|
93
|
-
@cache.decrement(@key)
|
94
|
-
assert_equal(0, @cache.read(@key).to_i)
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_cleanup
|
98
|
-
@cache.write(@key, @value)
|
99
|
-
@cache.cleanup
|
100
|
-
assert_equal(0, @cache.redis.dbsize)
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_edge_case_with_missing_time_key
|
104
|
-
@cache.write(@key, @value)
|
105
|
-
@cache.redis.del "#{ActiveSupport::Cache::RailsRedisCache::TIME_PREF}_#{@key}"
|
106
|
-
assert_equal(@value, @cache.read(@key))
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|