dsander-redis-store 0.3.8
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 +8 -0
- data/Gemfile +13 -0
- data/MIT-LICENSE +20 -0
- data/README.md +105 -0
- data/Rakefile +57 -0
- data/VERSION +1 -0
- data/lib/cache/merb/redis_store.rb +63 -0
- data/lib/cache/rails/redis_store.rb +109 -0
- data/lib/cache/sinatra/redis_store.rb +111 -0
- data/lib/rack/cache/redis_entitystore.rb +51 -0
- data/lib/rack/cache/redis_metastore.rb +42 -0
- data/lib/rack/session/merb.rb +32 -0
- data/lib/rack/session/redis.rb +81 -0
- data/lib/redis-store.rb +32 -0
- data/lib/redis/distributed_marshaled_redis.rb +10 -0
- data/lib/redis/marshaled_redis.rb +38 -0
- data/lib/redis/redis_factory.rb +27 -0
- data/redis-store.gemspec +81 -0
- data/spec/cache/merb/redis_store_spec.rb +145 -0
- data/spec/cache/rails/redis_store_spec.rb +174 -0
- data/spec/cache/sinatra/redis_store_spec.rb +194 -0
- data/spec/config/master.conf +171 -0
- data/spec/config/single.conf +171 -0
- data/spec/config/slave.conf +171 -0
- data/spec/rack/cache/entitystore/pony.jpg +0 -0
- data/spec/rack/cache/entitystore/redis_spec.rb +120 -0
- data/spec/rack/cache/metastore/redis_spec.rb +257 -0
- data/spec/rack/session/redis_spec.rb +238 -0
- data/spec/redis/distributed_marshaled_redis_spec.rb +35 -0
- data/spec/redis/marshaled_redis_spec.rb +54 -0
- data/spec/redis/redis_factory_spec.rb +34 -0
- data/spec/spec_helper.rb +19 -0
- data/tasks/redis.tasks.rb +70 -0
- metadata +103 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
describe "DistributedMarshaledRedis" do
|
4
|
+
before(:each) do
|
5
|
+
@dmr = DistributedMarshaledRedis.new [
|
6
|
+
{:host => "localhost", :port => "6380", :db => 0},
|
7
|
+
{:host => "localhost", :port => "6381", :db => 0}
|
8
|
+
]
|
9
|
+
@rabbit = OpenStruct.new :name => "bunny"
|
10
|
+
@white_rabbit = OpenStruct.new :color => "white"
|
11
|
+
@dmr.set "rabbit", @rabbit
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:all) do
|
15
|
+
@dmr.ring.nodes.each { |server| server.flushdb }
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should accept connection params" do
|
19
|
+
dmr = DistributedMarshaledRedis.new [ :host => "localhost", :port => "6380", :db => "1" ]
|
20
|
+
dmr.ring.should have(1).node
|
21
|
+
mr = dmr.ring.nodes.first
|
22
|
+
mr.host.should == "localhost"
|
23
|
+
mr.port.should == 6380
|
24
|
+
mr.db.should == 1
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should set an object" do
|
28
|
+
@dmr.set "rabbit", @white_rabbit
|
29
|
+
@dmr.get("rabbit").should == @white_rabbit
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should get an object" do
|
33
|
+
@dmr.get("rabbit").should == @rabbit
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
describe "MarshaledRedis" do
|
4
|
+
before(:each) do
|
5
|
+
@store = ::MarshaledRedis.new
|
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
|
+
after :each do
|
13
|
+
@store.quit
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should unmarshal an object on get" do
|
17
|
+
@store.get("rabbit").should === @rabbit
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should marshal object on set" do
|
21
|
+
@store.set "rabbit", @white_rabbit
|
22
|
+
@store.get("rabbit").should === @white_rabbit
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should not unmarshal object on get if raw option is true" do
|
26
|
+
@store.get("rabbit", :raw => true).should == Marshal.dump(@rabbit)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not marshal object on set if raw option is true" do
|
30
|
+
@store.set "rabbit", @white_rabbit, :raw => true
|
31
|
+
@store.get("rabbit", :raw => true).should == %(#<OpenStruct color="white">)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should not unmarshal object if getting an empty string" do
|
35
|
+
@store.set "empty_string", ""
|
36
|
+
lambda { @store.get("empty_string").should == "" }.should_not raise_error
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should not set an object if already exist" do
|
40
|
+
@store.setnx "rabbit", @white_rabbit
|
41
|
+
@store.get("rabbit").should === @rabbit
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should marshal object on set_unless_exists" do
|
45
|
+
@store.setnx "rabbit2", @white_rabbit
|
46
|
+
@store.get("rabbit2").should === @white_rabbit
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should not marshal object on set_unless_exists if raw option is true" do
|
50
|
+
@store.setnx "rabbit2", @white_rabbit, :raw => true
|
51
|
+
@store.get("rabbit2", :raw => true).should == %(#<OpenStruct color="white">)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
describe "RedisFactory" do
|
4
|
+
it "should instantiate a MarshaledRedis store" do
|
5
|
+
store = RedisFactory.create
|
6
|
+
store.should be_kind_of(MarshaledRedis)
|
7
|
+
store.host.should == "127.0.0.1"
|
8
|
+
store.port.should == 6379
|
9
|
+
store.db.should == 0
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should allow to specify host" do
|
13
|
+
store = RedisFactory.create "localhost"
|
14
|
+
store.host.should == "localhost"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should allow to specify port" do
|
18
|
+
store = RedisFactory.create "localhost:6380"
|
19
|
+
store.host.should == "localhost"
|
20
|
+
store.port.should == 6380
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should allow to specify db" do
|
24
|
+
store = RedisFactory.create "localhost:6380/13"
|
25
|
+
store.host.should == "localhost"
|
26
|
+
store.port.should == 6380
|
27
|
+
store.db.should == 13
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should instantiate a DistributedMarshaledRedis store" do
|
31
|
+
store = RedisFactory.create "localhost:6379", "localhost:6380"
|
32
|
+
store.should be_kind_of(DistributedMarshaledRedis)
|
33
|
+
end
|
34
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$: << File.join(File.dirname(__FILE__), "/../lib")
|
2
|
+
require "bundler"
|
3
|
+
Bundler.setup
|
4
|
+
|
5
|
+
#require "vendor/gems/environment"
|
6
|
+
require "ostruct"
|
7
|
+
require "spec"
|
8
|
+
require "redis"
|
9
|
+
require "merb"
|
10
|
+
require "rack/cache"
|
11
|
+
require "rack/cache/metastore"
|
12
|
+
require "rack/cache/entitystore"
|
13
|
+
require "redis-store"
|
14
|
+
require "active_support"
|
15
|
+
require "cache/rails/redis_store"
|
16
|
+
require "cache/sinatra/redis_store"
|
17
|
+
|
18
|
+
class Redis::Client; attr_reader :host, :port, :db end
|
19
|
+
$DEBUG = ENV["DEBUG"] === "true"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# steal the cool tasks from redis-rb
|
2
|
+
begin
|
3
|
+
require 'rbconfig'
|
4
|
+
engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'
|
5
|
+
version = Config::CONFIG['ruby_version']
|
6
|
+
load File.expand_path("../../vendor/gems/gems/redis-1.0.5/tasks/redis.tasks.rb", __FILE__)
|
7
|
+
rescue LoadError
|
8
|
+
end
|
9
|
+
|
10
|
+
class RedisRunner
|
11
|
+
def self.port
|
12
|
+
6379
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.stop
|
16
|
+
system %(echo "SHUTDOWN" | nc localhost #{port})
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class SingleRedisRunner < RedisRunner
|
21
|
+
def self.redisconfdir
|
22
|
+
File.expand_path(File.dirname(__FILE__) + "/../spec/config/single.conf")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class MasterRedisRunner < RedisRunner
|
27
|
+
def self.redisconfdir
|
28
|
+
File.expand_path(File.dirname(__FILE__) + "/../spec/config/master.conf")
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.dtach_socket
|
32
|
+
"/tmp/redis_master.dtach"
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.port
|
36
|
+
6380
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class SlaveRedisRunner < RedisRunner
|
41
|
+
def self.redisconfdir
|
42
|
+
File.expand_path(File.dirname(__FILE__) + "/../spec/config/slave.conf")
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.dtach_socket
|
46
|
+
"/tmp/redis_slave.dtach"
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.port
|
50
|
+
6381
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class RedisClusterRunner
|
55
|
+
def self.runners
|
56
|
+
[ SingleRedisRunner, MasterRedisRunner, SlaveRedisRunner ]
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.start_detached
|
60
|
+
runners.each do |runner|
|
61
|
+
runner.start_detached
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.stop
|
66
|
+
runners.each do |runner|
|
67
|
+
runner.stop
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dsander-redis-store
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 3
|
8
|
+
- 8
|
9
|
+
version: 0.3.8
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Luca Guidi
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-04-22 00:00:00 +00:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Rack::Session, Rack::Cache and cache Redis stores for Ruby web frameworks.
|
22
|
+
email: guidi.luca@gmail.com
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files:
|
28
|
+
- README.md
|
29
|
+
files:
|
30
|
+
- .gitignore
|
31
|
+
- Gemfile
|
32
|
+
- MIT-LICENSE
|
33
|
+
- README.md
|
34
|
+
- Rakefile
|
35
|
+
- VERSION
|
36
|
+
- lib/cache/merb/redis_store.rb
|
37
|
+
- lib/cache/rails/redis_store.rb
|
38
|
+
- lib/cache/sinatra/redis_store.rb
|
39
|
+
- lib/rack/cache/redis_entitystore.rb
|
40
|
+
- lib/rack/cache/redis_metastore.rb
|
41
|
+
- lib/rack/session/merb.rb
|
42
|
+
- lib/rack/session/redis.rb
|
43
|
+
- lib/redis-store.rb
|
44
|
+
- lib/redis/distributed_marshaled_redis.rb
|
45
|
+
- lib/redis/marshaled_redis.rb
|
46
|
+
- lib/redis/redis_factory.rb
|
47
|
+
- redis-store.gemspec
|
48
|
+
- spec/cache/merb/redis_store_spec.rb
|
49
|
+
- spec/cache/rails/redis_store_spec.rb
|
50
|
+
- spec/cache/sinatra/redis_store_spec.rb
|
51
|
+
- spec/config/master.conf
|
52
|
+
- spec/config/single.conf
|
53
|
+
- spec/config/slave.conf
|
54
|
+
- spec/rack/cache/entitystore/pony.jpg
|
55
|
+
- spec/rack/cache/entitystore/redis_spec.rb
|
56
|
+
- spec/rack/cache/metastore/redis_spec.rb
|
57
|
+
- spec/rack/session/redis_spec.rb
|
58
|
+
- spec/redis/distributed_marshaled_redis_spec.rb
|
59
|
+
- spec/redis/marshaled_redis_spec.rb
|
60
|
+
- spec/redis/redis_factory_spec.rb
|
61
|
+
- spec/spec_helper.rb
|
62
|
+
- tasks/redis.tasks.rb
|
63
|
+
has_rdoc: true
|
64
|
+
homepage: http://github.com/jodosha/redis-store
|
65
|
+
licenses: []
|
66
|
+
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options:
|
69
|
+
- --charset=UTF-8
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
requirements: []
|
87
|
+
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.3.6
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: Rack::Session, Rack::Cache and cache Redis stores for Ruby web frameworks.
|
93
|
+
test_files:
|
94
|
+
- spec/rack/session/redis_spec.rb
|
95
|
+
- spec/rack/cache/entitystore/redis_spec.rb
|
96
|
+
- spec/rack/cache/metastore/redis_spec.rb
|
97
|
+
- spec/cache/sinatra/redis_store_spec.rb
|
98
|
+
- spec/cache/rails/redis_store_spec.rb
|
99
|
+
- spec/cache/merb/redis_store_spec.rb
|
100
|
+
- spec/spec_helper.rb
|
101
|
+
- spec/redis/distributed_marshaled_redis_spec.rb
|
102
|
+
- spec/redis/redis_factory_spec.rb
|
103
|
+
- spec/redis/marshaled_redis_spec.rb
|