redis-store 1.0.0.1 → 1.1.0.rc
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.
Potentially problematic release.
This version of redis-store might be problematic. Click here for more details.
- data/Gemfile +2 -34
- data/README.md +17 -220
- data/Rakefile +7 -54
- data/lib/redis-store.rb +11 -44
- data/lib/redis/distributed_store.rb +8 -1
- data/lib/redis/factory.rb +17 -21
- data/lib/redis/store.rb +3 -8
- data/lib/redis/store/interface.rb +4 -0
- data/lib/redis/store/marshalling.rb +4 -0
- data/lib/redis/store/version.rb +1 -8
- data/lib/tasks/redis.tasks.rb +167 -0
- data/redis-store.gemspec +22 -97
- data/{spec → test}/config/node-one.conf +2 -2
- data/{spec → test}/config/node-two.conf +2 -2
- data/{spec → test}/config/redis.conf +3 -2
- data/{spec/redis/distributed_store_spec.rb → test/redis/distributed_store_test.rb} +13 -15
- data/test/redis/factory_test.rb +98 -0
- data/test/redis/store/interface_test.rb +27 -0
- data/test/redis/store/marshalling_test.rb +127 -0
- data/test/redis/store/namespace_test.rb +86 -0
- data/test/redis/store/version_test.rb +7 -0
- data/test/redis/store_test.rb +17 -0
- data/test/test_helper.rb +22 -0
- metadata +85 -97
- data/.travis.yml +0 -7
- data/CHANGELOG +0 -311
- data/VERSION +0 -1
- data/lib/action_controller/session/redis_session_store.rb +0 -81
- data/lib/active_support/cache/redis_store.rb +0 -254
- data/lib/cache/merb/redis_store.rb +0 -79
- data/lib/cache/sinatra/redis_store.rb +0 -131
- data/lib/i18n/backend/redis.rb +0 -67
- data/lib/rack/cache/redis_entitystore.rb +0 -48
- data/lib/rack/cache/redis_metastore.rb +0 -40
- data/lib/rack/session/merb.rb +0 -32
- data/lib/rack/session/redis.rb +0 -88
- data/spec/action_controller/session/redis_session_store_spec.rb +0 -126
- data/spec/active_support/cache/redis_store_spec.rb +0 -426
- data/spec/cache/merb/redis_store_spec.rb +0 -143
- data/spec/cache/sinatra/redis_store_spec.rb +0 -192
- data/spec/i18n/backend/redis_spec.rb +0 -72
- data/spec/rack/cache/entitystore/pony.jpg +0 -0
- data/spec/rack/cache/entitystore/redis_spec.rb +0 -124
- data/spec/rack/cache/metastore/redis_spec.rb +0 -259
- data/spec/rack/session/redis_spec.rb +0 -234
- data/spec/redis/factory_spec.rb +0 -110
- data/spec/redis/store/interface_spec.rb +0 -23
- data/spec/redis/store/marshalling_spec.rb +0 -119
- data/spec/redis/store/namespace_spec.rb +0 -76
- data/spec/redis/store/version_spec.rb +0 -7
- data/spec/redis/store_spec.rb +0 -13
- data/spec/spec_helper.rb +0 -43
- data/tasks/redis.tasks.rb +0 -235
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe "Redis::Factory" do
|
4
|
+
describe ".create" do
|
5
|
+
describe "when not given any arguments" do
|
6
|
+
it "instantiates Redis::Store" do
|
7
|
+
store = Redis::Factory.create
|
8
|
+
store.must_be_kind_of(Redis::Store)
|
9
|
+
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when given a Hash" do
|
14
|
+
it "uses specified host" do
|
15
|
+
store = Redis::Factory.create :host => "localhost"
|
16
|
+
store.to_s.must_equal("Redis Client connected to localhost:6379 against DB 0")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "uses specified port" do
|
20
|
+
store = Redis::Factory.create :host => "localhost", :port => 6380
|
21
|
+
store.to_s.must_equal("Redis Client connected to localhost:6380 against DB 0")
|
22
|
+
end
|
23
|
+
|
24
|
+
it "uses specified db" do
|
25
|
+
store = Redis::Factory.create :host => "localhost", :port => 6380, :db => 13
|
26
|
+
store.to_s.must_equal("Redis Client connected to localhost:6380 against DB 13")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "uses specified namespace" do
|
30
|
+
store = Redis::Factory.create :namespace => "theplaylist"
|
31
|
+
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
32
|
+
end
|
33
|
+
|
34
|
+
it "uses specified key_prefix as namespace" do
|
35
|
+
store = Redis::Factory.create :key_prefix => "theplaylist"
|
36
|
+
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
37
|
+
end
|
38
|
+
|
39
|
+
it "uses specified password" do
|
40
|
+
store = Redis::Factory.create :password => "secret"
|
41
|
+
store.instance_variable_get(:@client).password.must_equal("secret")
|
42
|
+
end
|
43
|
+
|
44
|
+
it "allows/disable marshalling" do
|
45
|
+
store = Redis::Factory.create :marshalling => false
|
46
|
+
store.instance_variable_get(:@marshalling).must_equal(false)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should instantiate a Redis::DistributedStore store" do
|
50
|
+
store = Redis::Factory.create(
|
51
|
+
{:host => "localhost", :port => 6379},
|
52
|
+
{:host => "localhost", :port => 6380}
|
53
|
+
)
|
54
|
+
store.must_be_kind_of(Redis::DistributedStore)
|
55
|
+
store.nodes.map {|node| node.to_s }.must_equal([
|
56
|
+
"Redis Client connected to localhost:6379 against DB 0",
|
57
|
+
"Redis Client connected to localhost:6380 against DB 0",
|
58
|
+
])
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "when given a String" do
|
63
|
+
it "uses specified host" do
|
64
|
+
store = Redis::Factory.create "redis://127.0.0.1"
|
65
|
+
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0")
|
66
|
+
end
|
67
|
+
|
68
|
+
it "uses specified port" do
|
69
|
+
store = Redis::Factory.create "redis://127.0.0.1:6380"
|
70
|
+
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6380 against DB 0")
|
71
|
+
end
|
72
|
+
|
73
|
+
it "uses specified db" do
|
74
|
+
store = Redis::Factory.create "redis://127.0.0.1:6380/13"
|
75
|
+
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6380 against DB 13")
|
76
|
+
end
|
77
|
+
|
78
|
+
it "uses specified namespace" do
|
79
|
+
store = Redis::Factory.create "redis://127.0.0.1:6379/0/theplaylist"
|
80
|
+
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
81
|
+
end
|
82
|
+
|
83
|
+
it "uses specified password" do
|
84
|
+
store = Redis::Factory.create "redis://:secret@127.0.0.1:6379/0/theplaylist"
|
85
|
+
store.instance_variable_get(:@client).password.must_equal("secret")
|
86
|
+
end
|
87
|
+
|
88
|
+
it "instantiates Redis::DistributedStore" do
|
89
|
+
store = Redis::Factory.create "redis://127.0.0.1:6379", "redis://127.0.0.1:6380"
|
90
|
+
store.must_be_kind_of(Redis::DistributedStore)
|
91
|
+
store.nodes.map {|node| node.to_s }.must_equal([
|
92
|
+
"Redis Client connected to 127.0.0.1:6379 against DB 0",
|
93
|
+
"Redis Client connected to 127.0.0.1:6380 against DB 0",
|
94
|
+
])
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class InterfacedRedis < Redis
|
4
|
+
include Redis::Store::Interface
|
5
|
+
end
|
6
|
+
|
7
|
+
describe Redis::Store::Interface do
|
8
|
+
before do
|
9
|
+
@r = InterfacedRedis.new
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should get an element" do
|
13
|
+
lambda { @r.get("key", :option => true) } #.wont_raise ArgumentError
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should set an element" do
|
17
|
+
lambda { @r.set("key", "value", :option => true) } #.wont_raise ArgumentError
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should setnx an element" do
|
21
|
+
lambda { @r.setnx("key", "value", :option => true) } #.wont_raise ArgumentError
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should setex an element" do
|
25
|
+
lambda { @r.setex("key", 1, "value", :option => true) } #.wont_raise ArgumentError
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe "Redis::Marshalling" do
|
4
|
+
def setup
|
5
|
+
@store = Redis::Store.new :marshalling => true
|
6
|
+
@rabbit = OpenStruct.new :name => "bunny"
|
7
|
+
@white_rabbit = OpenStruct.new :color => "white"
|
8
|
+
@store.set "rabbit", @rabbit
|
9
|
+
@store.del "rabbit2"
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
@store.quit
|
14
|
+
end
|
15
|
+
|
16
|
+
it "unmarshals on get" do
|
17
|
+
@store.get("rabbit").must_equal(@rabbit)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "marshals on set" do
|
21
|
+
@store.set "rabbit", @white_rabbit
|
22
|
+
@store.get("rabbit").must_equal(@white_rabbit)
|
23
|
+
end
|
24
|
+
|
25
|
+
if RUBY_VERSION.match /1\.9/
|
26
|
+
it "doesn't unmarshal on get if raw option is true" do
|
27
|
+
@store.get("rabbit", :raw => true).must_equal("\x04\bU:\x0FOpenStruct{\x06:\tnameI\"\nbunny\x06:\x06EF")
|
28
|
+
end
|
29
|
+
else
|
30
|
+
it "doesn't unmarshal on get if raw option is true" do
|
31
|
+
@store.get("rabbit", :raw => true).must_equal("\004\bU:\017OpenStruct{\006:\tname\"\nbunny")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it "doesn't marshal set if raw option is true" do
|
36
|
+
@store.set "rabbit", @white_rabbit, :raw => true
|
37
|
+
@store.get("rabbit", :raw => true).must_equal(%(#<OpenStruct color="white">))
|
38
|
+
end
|
39
|
+
|
40
|
+
it "doesn't unmarshal if get returns an empty string" do
|
41
|
+
@store.set "empty_string", ""
|
42
|
+
@store.get("empty_string").must_equal("")
|
43
|
+
# TODO use a meaningful Exception
|
44
|
+
# lambda { @store.get("empty_string").must_equal("") }.wont_raise Exception
|
45
|
+
end
|
46
|
+
|
47
|
+
it "doesn't set an object if already exist" do
|
48
|
+
@store.setnx "rabbit", @white_rabbit
|
49
|
+
@store.get("rabbit").must_equal(@rabbit)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "marshals on set unless exists" do
|
53
|
+
@store.setnx "rabbit2", @white_rabbit
|
54
|
+
@store.get("rabbit2").must_equal(@white_rabbit)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "doesn't marshal on set unless exists if raw option is true" do
|
58
|
+
@store.setnx "rabbit2", @white_rabbit, :raw => true
|
59
|
+
@store.get("rabbit2", :raw => true).must_equal(%(#<OpenStruct color="white">))
|
60
|
+
end
|
61
|
+
|
62
|
+
it "marshals on set expire" do
|
63
|
+
@store.setex "rabbit2", 1, @white_rabbit
|
64
|
+
@store.get("rabbit2").must_equal(@white_rabbit)
|
65
|
+
sleep 2
|
66
|
+
@store.get("rabbit2").must_be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
it "doesn't unmarshal on multi get" do
|
70
|
+
@store.set "rabbit2", @white_rabbit
|
71
|
+
rabbit, rabbit2 = @store.mget "rabbit", "rabbit2"
|
72
|
+
rabbit.must_equal(@rabbit)
|
73
|
+
rabbit2.must_equal(@white_rabbit)
|
74
|
+
end
|
75
|
+
|
76
|
+
if RUBY_VERSION.match /1\.9/
|
77
|
+
it "doesn't unmarshal on multi get if raw option is true" do
|
78
|
+
@store.set "rabbit2", @white_rabbit
|
79
|
+
rabbit, rabbit2 = @store.mget "rabbit", "rabbit2", :raw => true
|
80
|
+
rabbit.must_equal("\x04\bU:\x0FOpenStruct{\x06:\tnameI\"\nbunny\x06:\x06EF")
|
81
|
+
rabbit2.must_equal("\x04\bU:\x0FOpenStruct{\x06:\ncolorI\"\nwhite\x06:\x06EF")
|
82
|
+
end
|
83
|
+
else
|
84
|
+
it "doesn't unmarshal on multi get if raw option is true" do
|
85
|
+
@store.set "rabbit2", @white_rabbit
|
86
|
+
rabbit, rabbit2 = @store.mget "rabbit", "rabbit2", :raw => true
|
87
|
+
rabbit.must_equal("\004\bU:\017OpenStruct{\006:\tname\"\nbunny")
|
88
|
+
rabbit2.must_equal("\004\bU:\017OpenStruct{\006:\ncolor\"\nwhite")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "binary safety" do
|
93
|
+
it "marshals objects" do
|
94
|
+
utf8_key = [51339].pack("U*")
|
95
|
+
ascii_rabbit = OpenStruct.new(:name => [128].pack("C*"))
|
96
|
+
|
97
|
+
@store.set(utf8_key, ascii_rabbit)
|
98
|
+
@store.get(utf8_key).must_equal(ascii_rabbit)
|
99
|
+
end
|
100
|
+
|
101
|
+
it "gets and sets raw values" do
|
102
|
+
utf8_key = [51339].pack("U*")
|
103
|
+
ascii_string = [128].pack("C*")
|
104
|
+
|
105
|
+
@store.set(utf8_key, ascii_string, :raw => true)
|
106
|
+
@store.get(utf8_key, :raw => true).bytes.to_a.must_equal(ascii_string.bytes.to_a)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "marshals objects on setnx" do
|
110
|
+
utf8_key = [51339].pack("U*")
|
111
|
+
ascii_rabbit = OpenStruct.new(:name => [128].pack("C*"))
|
112
|
+
|
113
|
+
@store.del(utf8_key)
|
114
|
+
@store.setnx(utf8_key, ascii_rabbit)
|
115
|
+
@store.get(utf8_key).must_equal(ascii_rabbit)
|
116
|
+
end
|
117
|
+
|
118
|
+
it "gets and sets raw values on setnx" do
|
119
|
+
utf8_key = [51339].pack("U*")
|
120
|
+
ascii_string = [128].pack("C*")
|
121
|
+
|
122
|
+
@store.del(utf8_key)
|
123
|
+
@store.setnx(utf8_key, ascii_string, :raw => true)
|
124
|
+
@store.get(utf8_key, :raw => true).bytes.to_a.must_equal(ascii_string.bytes.to_a)
|
125
|
+
end
|
126
|
+
end if defined?(Encoding)
|
127
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe "Redis::Store::Namespace" do
|
4
|
+
def setup
|
5
|
+
@namespace = "theplaylist"
|
6
|
+
@store = Redis::Store.new :namespace => @namespace, :marshalling => false # TODO remove mashalling option
|
7
|
+
@client = @store.instance_variable_get(:@client)
|
8
|
+
@rabbit = "bunny"
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
@store.quit
|
13
|
+
end
|
14
|
+
|
15
|
+
it "only decorates instances that need to be namespaced" do
|
16
|
+
store = Redis::Store.new
|
17
|
+
client = store.instance_variable_get(:@client)
|
18
|
+
client.expects(:call).with([:get, "rabbit"])
|
19
|
+
store.get("rabbit")
|
20
|
+
end
|
21
|
+
|
22
|
+
it "doesn't namespace a key which is already namespaced" do
|
23
|
+
@store.send(:interpolate, "#{@namespace}:rabbit").must_equal("#{@namespace}:rabbit")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "namespaces get"
|
27
|
+
it "namespaces set"
|
28
|
+
it "namespaces setnx"
|
29
|
+
it "namespaces del with single key"
|
30
|
+
it "namespaces del with multiple keys"
|
31
|
+
it "namespaces keys"
|
32
|
+
it "namespaces exists"
|
33
|
+
it "namespaces incrby"
|
34
|
+
it "namespaces decrby"
|
35
|
+
it "namespaces mget"
|
36
|
+
|
37
|
+
# it "should namespace get" do
|
38
|
+
# @client.expects(:call).with([:get, "#{@namespace}:rabbit"]).once
|
39
|
+
# @store.get("rabbit")
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# it "should namespace set" do
|
43
|
+
# @client.should_receive(:call).with([:set, "#{@namespace}:rabbit", @rabbit])
|
44
|
+
# @store.set "rabbit", @rabbit
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# it "should namespace setnx" do
|
48
|
+
# @client.should_receive(:call).with([:setnx, "#{@namespace}:rabbit", @rabbit])
|
49
|
+
# @store.setnx "rabbit", @rabbit
|
50
|
+
# end
|
51
|
+
#
|
52
|
+
# it "should namespace del with single key" do
|
53
|
+
# @client.should_receive(:call).with([:del, "#{@namespace}:rabbit"])
|
54
|
+
# @store.del "rabbit"
|
55
|
+
# end
|
56
|
+
#
|
57
|
+
# it "should namespace del with multiple keys" do
|
58
|
+
# @client.should_receive(:call).with([:del, "#{@namespace}:rabbit", "#{@namespace}:white_rabbit"])
|
59
|
+
# @store.del "rabbit", "white_rabbit"
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# it "should namespace keys" do
|
63
|
+
# @store.set "rabbit", @rabbit
|
64
|
+
# @store.keys("rabb*").should == [ "rabbit" ]
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
# it "should namespace exists" do
|
68
|
+
# @client.should_receive(:call).with([:exists, "#{@namespace}:rabbit"])
|
69
|
+
# @store.exists "rabbit"
|
70
|
+
# end
|
71
|
+
#
|
72
|
+
# it "should namespace incrby" do
|
73
|
+
# @client.should_receive(:call).with([:incrby, "#{@namespace}:counter", 1])
|
74
|
+
# @store.incrby "counter", 1
|
75
|
+
# end
|
76
|
+
#
|
77
|
+
# it "should namespace decrby" do
|
78
|
+
# @client.should_receive(:call).with([:decrby, "#{@namespace}:counter", 1])
|
79
|
+
# @store.decrby "counter", 1
|
80
|
+
# end
|
81
|
+
#
|
82
|
+
# it "should namespace mget" do
|
83
|
+
# @client.should_receive(:call).with([:mget, "#{@namespace}:rabbit", "#{@namespace}:white_rabbit"])
|
84
|
+
# @store.mget "rabbit", "white_rabbit"
|
85
|
+
# end
|
86
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe Redis::Store do
|
4
|
+
before do
|
5
|
+
@store = Redis::Store.new
|
6
|
+
@client = @store.instance_variable_get(:@client)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns useful informations about the server" do
|
10
|
+
@store.to_s.must_equal("Redis Client connected to #{@client.host}:#{@client.port} against DB #{@client.db}")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "must force reconnection" do
|
14
|
+
@client.expects(:reconnect)
|
15
|
+
@store.reconnect
|
16
|
+
end
|
17
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Bundler.setup
|
2
|
+
gem 'minitest'
|
3
|
+
require 'minitest/spec'
|
4
|
+
require 'minitest/autorun'
|
5
|
+
require 'mocha'
|
6
|
+
require 'redis'
|
7
|
+
require 'redis-store'
|
8
|
+
|
9
|
+
$DEBUG = ENV["DEBUG"] === "true"
|
10
|
+
|
11
|
+
Redis::DistributedStore.send(:class_variable_set, :@@timeout, 30)
|
12
|
+
|
13
|
+
# http://mentalized.net/journal/2010/04/02/suppress_warnings_from_ruby/
|
14
|
+
module Kernel
|
15
|
+
def suppress_warnings
|
16
|
+
original_verbosity = $VERBOSE
|
17
|
+
$VERBOSE = nil
|
18
|
+
result = yield
|
19
|
+
$VERBOSE = original_verbosity
|
20
|
+
return result
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 7712002
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
8
|
- 1
|
11
|
-
|
9
|
+
- 0
|
10
|
+
- rc
|
11
|
+
version: 1.1.0.rc
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Luca Guidi
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
19
|
+
date: 2011-12-30 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: redis
|
@@ -26,141 +26,125 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 7
|
30
30
|
segments:
|
31
31
|
- 2
|
32
32
|
- 2
|
33
|
-
-
|
34
|
-
version: 2.2.
|
33
|
+
- 0
|
34
|
+
version: 2.2.0
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
-
name:
|
38
|
+
name: rake
|
39
39
|
prerelease: false
|
40
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
45
|
+
hash: 11
|
46
46
|
segments:
|
47
47
|
- 0
|
48
|
-
|
48
|
+
- 9
|
49
|
+
- 2
|
50
|
+
- 2
|
51
|
+
version: 0.9.2.2
|
49
52
|
type: :development
|
50
53
|
version_requirements: *id002
|
51
54
|
- !ruby/object:Gem::Dependency
|
52
|
-
name:
|
55
|
+
name: bundler
|
53
56
|
prerelease: false
|
54
57
|
requirement: &id003 !ruby/object:Gem::Requirement
|
55
58
|
none: false
|
56
59
|
requirements:
|
57
|
-
- -
|
60
|
+
- - ~>
|
58
61
|
- !ruby/object:Gem::Version
|
59
|
-
hash:
|
62
|
+
hash: 7712070
|
60
63
|
segments:
|
61
|
-
-
|
62
|
-
|
64
|
+
- 1
|
65
|
+
- 1
|
66
|
+
- rc
|
67
|
+
version: 1.1.rc
|
63
68
|
type: :development
|
64
69
|
version_requirements: *id003
|
65
70
|
- !ruby/object:Gem::Dependency
|
66
|
-
name:
|
71
|
+
name: mocha
|
67
72
|
prerelease: false
|
68
73
|
requirement: &id004 !ruby/object:Gem::Requirement
|
69
74
|
none: false
|
70
75
|
requirements:
|
71
|
-
- -
|
76
|
+
- - ~>
|
72
77
|
- !ruby/object:Gem::Version
|
73
|
-
hash:
|
78
|
+
hash: 55
|
74
79
|
segments:
|
75
80
|
- 0
|
76
|
-
|
81
|
+
- 10
|
82
|
+
- 0
|
83
|
+
version: 0.10.0
|
77
84
|
type: :development
|
78
85
|
version_requirements: *id004
|
79
86
|
- !ruby/object:Gem::Dependency
|
80
|
-
name:
|
87
|
+
name: minitest
|
81
88
|
prerelease: false
|
82
89
|
requirement: &id005 !ruby/object:Gem::Requirement
|
83
90
|
none: false
|
84
91
|
requirements:
|
85
|
-
- -
|
92
|
+
- - ~>
|
86
93
|
- !ruby/object:Gem::Version
|
87
|
-
hash:
|
94
|
+
hash: 47
|
88
95
|
segments:
|
89
|
-
-
|
90
|
-
-
|
96
|
+
- 2
|
97
|
+
- 8
|
91
98
|
- 0
|
92
|
-
version:
|
99
|
+
version: 2.8.0
|
93
100
|
type: :development
|
94
101
|
version_requirements: *id005
|
95
102
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
103
|
+
name: purdytest
|
97
104
|
prerelease: false
|
98
105
|
requirement: &id006 !ruby/object:Gem::Requirement
|
99
106
|
none: false
|
100
107
|
requirements:
|
101
|
-
- -
|
108
|
+
- - ~>
|
102
109
|
- !ruby/object:Gem::Version
|
103
|
-
hash:
|
110
|
+
hash: 23
|
104
111
|
segments:
|
105
112
|
- 1
|
106
|
-
- 3
|
107
113
|
- 0
|
108
|
-
|
114
|
+
- 0
|
115
|
+
version: 1.0.0
|
109
116
|
type: :development
|
110
117
|
version_requirements: *id006
|
111
118
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
119
|
+
name: git
|
113
120
|
prerelease: false
|
114
121
|
requirement: &id007 !ruby/object:Gem::Requirement
|
115
122
|
none: false
|
116
123
|
requirements:
|
117
|
-
- -
|
124
|
+
- - ~>
|
118
125
|
- !ruby/object:Gem::Version
|
119
|
-
hash:
|
126
|
+
hash: 21
|
120
127
|
segments:
|
121
|
-
-
|
122
|
-
|
128
|
+
- 1
|
129
|
+
- 2
|
130
|
+
- 5
|
131
|
+
version: 1.2.5
|
123
132
|
type: :development
|
124
133
|
version_requirements: *id007
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: ruby-debug
|
127
|
-
prerelease: false
|
128
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ">="
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
hash: 3
|
134
|
-
segments:
|
135
|
-
- 0
|
136
|
-
version: "0"
|
137
|
-
type: :development
|
138
|
-
version_requirements: *id008
|
139
134
|
description: Namespaced Rack::Session, Rack::Cache, I18n and cache Redis stores for Ruby web frameworks.
|
140
|
-
email:
|
135
|
+
email:
|
136
|
+
- guidi.luca@gmail.com
|
141
137
|
executables: []
|
142
138
|
|
143
139
|
extensions: []
|
144
140
|
|
145
|
-
extra_rdoc_files:
|
146
|
-
|
141
|
+
extra_rdoc_files: []
|
142
|
+
|
147
143
|
files:
|
148
|
-
- .travis.yml
|
149
|
-
- CHANGELOG
|
150
144
|
- Gemfile
|
151
145
|
- MIT-LICENSE
|
152
146
|
- README.md
|
153
147
|
- Rakefile
|
154
|
-
- VERSION
|
155
|
-
- lib/action_controller/session/redis_session_store.rb
|
156
|
-
- lib/active_support/cache/redis_store.rb
|
157
|
-
- lib/cache/merb/redis_store.rb
|
158
|
-
- lib/cache/sinatra/redis_store.rb
|
159
|
-
- lib/i18n/backend/redis.rb
|
160
|
-
- lib/rack/cache/redis_entitystore.rb
|
161
|
-
- lib/rack/cache/redis_metastore.rb
|
162
|
-
- lib/rack/session/merb.rb
|
163
|
-
- lib/rack/session/redis.rb
|
164
148
|
- lib/redis-store.rb
|
165
149
|
- lib/redis/distributed_store.rb
|
166
150
|
- lib/redis/factory.rb
|
@@ -170,29 +154,20 @@ files:
|
|
170
154
|
- lib/redis/store/namespace.rb
|
171
155
|
- lib/redis/store/ttl.rb
|
172
156
|
- lib/redis/store/version.rb
|
157
|
+
- lib/tasks/redis.tasks.rb
|
173
158
|
- redis-store.gemspec
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
177
|
-
-
|
178
|
-
-
|
179
|
-
-
|
180
|
-
-
|
181
|
-
-
|
182
|
-
-
|
183
|
-
-
|
184
|
-
-
|
185
|
-
|
186
|
-
- spec/redis/distributed_store_spec.rb
|
187
|
-
- spec/redis/factory_spec.rb
|
188
|
-
- spec/redis/store/interface_spec.rb
|
189
|
-
- spec/redis/store/marshalling_spec.rb
|
190
|
-
- spec/redis/store/namespace_spec.rb
|
191
|
-
- spec/redis/store/version_spec.rb
|
192
|
-
- spec/redis/store_spec.rb
|
193
|
-
- spec/spec_helper.rb
|
194
|
-
- tasks/redis.tasks.rb
|
195
|
-
homepage: http://github.com/jodosha/redis-store
|
159
|
+
- test/config/node-one.conf
|
160
|
+
- test/config/node-two.conf
|
161
|
+
- test/config/redis.conf
|
162
|
+
- test/redis/distributed_store_test.rb
|
163
|
+
- test/redis/factory_test.rb
|
164
|
+
- test/redis/store/interface_test.rb
|
165
|
+
- test/redis/store/marshalling_test.rb
|
166
|
+
- test/redis/store/namespace_test.rb
|
167
|
+
- test/redis/store/version_test.rb
|
168
|
+
- test/redis/store_test.rb
|
169
|
+
- test/test_helper.rb
|
170
|
+
homepage: ""
|
196
171
|
licenses: []
|
197
172
|
|
198
173
|
post_install_message:
|
@@ -212,18 +187,31 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
212
187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
213
188
|
none: false
|
214
189
|
requirements:
|
215
|
-
- - "
|
190
|
+
- - ">"
|
216
191
|
- !ruby/object:Gem::Version
|
217
|
-
hash:
|
192
|
+
hash: 25
|
218
193
|
segments:
|
219
|
-
-
|
220
|
-
|
194
|
+
- 1
|
195
|
+
- 3
|
196
|
+
- 1
|
197
|
+
version: 1.3.1
|
221
198
|
requirements: []
|
222
199
|
|
223
|
-
rubyforge_project:
|
200
|
+
rubyforge_project: redis-store
|
224
201
|
rubygems_version: 1.8.6
|
225
202
|
signing_key:
|
226
203
|
specification_version: 3
|
227
|
-
summary:
|
228
|
-
test_files:
|
229
|
-
|
204
|
+
summary: Redis stores for Ruby frameworks
|
205
|
+
test_files:
|
206
|
+
- test/config/node-one.conf
|
207
|
+
- test/config/node-two.conf
|
208
|
+
- test/config/redis.conf
|
209
|
+
- test/redis/distributed_store_test.rb
|
210
|
+
- test/redis/factory_test.rb
|
211
|
+
- test/redis/store/interface_test.rb
|
212
|
+
- test/redis/store/marshalling_test.rb
|
213
|
+
- test/redis/store/namespace_test.rb
|
214
|
+
- test/redis/store/version_test.rb
|
215
|
+
- test/redis/store_test.rb
|
216
|
+
- test/test_helper.rb
|
217
|
+
has_rdoc:
|