redis-namespace 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of redis-namespace might be problematic. Click here for more details.

data/Rakefile CHANGED
@@ -15,7 +15,7 @@ begin
15
15
  gemspec.email = "chris@ozmm.org"
16
16
  gemspec.homepage = "http://github.com/defunkt/redis-namespace"
17
17
  gemspec.authors = ["Chris Wanstrath"]
18
- gemspec.version = '0.1.1'
18
+ gemspec.version = '0.2.0'
19
19
  end
20
20
  rescue LoadError
21
21
  puts "Jeweler not available. Install it with:"
@@ -8,7 +8,10 @@ class Redis
8
8
  # $('.vt li a').map(function(){ return $(this).text().toLowerCase() }).sort()
9
9
  COMMANDS = [
10
10
  "auth",
11
+ "bgrewriteaof",
11
12
  "bgsave",
13
+ "blpop",
14
+ "brpop",
12
15
  "dbsize",
13
16
  "decr",
14
17
  "decrby",
@@ -35,11 +38,14 @@ class Redis
35
38
  "mget",
36
39
  "monitor",
37
40
  "move",
41
+ "mset",
42
+ "msetnx",
38
43
  "quit",
39
44
  "randomkey",
40
45
  "rename",
41
46
  "renamenx",
42
47
  "rpop",
48
+ "rpoplpush",
43
49
  "rpush",
44
50
  "sadd",
45
51
  "save",
@@ -57,15 +63,28 @@ class Redis
57
63
  "smembers",
58
64
  "smove",
59
65
  "sort",
66
+ "spop",
67
+ "srandmember",
60
68
  "srem",
61
69
  "sunion",
62
70
  "sunionstore",
63
71
  "ttl",
64
72
  "type",
73
+ "zadd",
74
+ "zcard",
75
+ "zincrby",
76
+ "zrange",
77
+ "zrangebyscore",
78
+ "zrem",
79
+ "zremrangebyscore",
80
+ "zrevrange",
81
+ "zscore",
65
82
  "[]",
66
83
  "[]="
67
84
  ]
68
85
 
86
+ attr_accessor :namespace
87
+
69
88
  def initialize(namespace, options = {})
70
89
  @namespace = namespace
71
90
  @redis = options[:redis]
@@ -91,6 +110,14 @@ class Redis
91
110
  call_command([:mget] + keys)
92
111
  end
93
112
 
113
+ def mset(keys)
114
+ call_mset(:mset, keys)
115
+ end
116
+
117
+ def msetnx(keys)
118
+ call_mset(:msetnx, keys)
119
+ end
120
+
94
121
  def method_missing(command, *args, &block)
95
122
  if COMMANDS.include?(command.to_s) && args[0]
96
123
  args[0] = "#{@namespace}:#{args[0]}"
@@ -98,5 +125,19 @@ class Redis
98
125
 
99
126
  @redis.send(command, *args, &block)
100
127
  end
128
+
129
+
130
+ private
131
+
132
+
133
+ def call_mset(command, keys)
134
+ if @namespace
135
+ namespaced_keys = {}
136
+ keys.each { |key, value| namespaced_keys["#{@namespace}:#{key}"] = value }
137
+ keys = namespaced_keys
138
+ end
139
+
140
+ call_command([command] + [keys])
141
+ end
101
142
  end
102
143
  end
@@ -36,11 +36,35 @@ describe "redis" do
36
36
  end
37
37
 
38
38
  it "should be able to use a namespace with mget" do
39
- r = Redis::Namespace.new(:ns, :redis => @redis)
40
-
41
39
  @namespaced['foo'] = 1000
42
40
  @namespaced['bar'] = 2000
43
41
  @namespaced.mapped_mget('foo', 'bar').should == { 'foo' => '1000', 'bar' => '2000' }
44
42
  @namespaced.mapped_mget('foo', 'baz', 'bar').should == {'foo'=>'1000', 'bar'=>'2000'}
45
43
  end
44
+
45
+ it "should be able to use a namespace with mset" do
46
+ @namespaced.mset('foo' => '1000', 'bar' => '2000')
47
+ @namespaced.mapped_mget('foo', 'bar').should == { 'foo' => '1000', 'bar' => '2000' }
48
+ @namespaced.mapped_mget('foo', 'baz', 'bar').should == { 'foo' => '1000', 'bar' => '2000'}
49
+ end
50
+
51
+ it "should be able to use a namespace with msetnx" do
52
+ @namespaced.msetnx('foo' => '1000', 'bar' => '2000')
53
+ @namespaced.mapped_mget('foo', 'bar').should == { 'foo' => '1000', 'bar' => '2000' }
54
+ @namespaced.mapped_mget('foo', 'baz', 'bar').should == { 'foo' => '1000', 'bar' => '2000'}
55
+ end
56
+
57
+ it "can change its namespace" do
58
+ @namespaced['foo'].should == nil
59
+ @namespaced['foo'] = 'chris'
60
+ @namespaced['foo'].should == 'chris'
61
+
62
+ @namespaced.namespace.should == :ns
63
+ @namespaced.namespace = :spec
64
+ @namespaced.namespace.should == :spec
65
+
66
+ @namespaced['foo'].should == nil
67
+ @namespaced['foo'] = 'chris'
68
+ @namespaced['foo'].should == 'chris'
69
+ end
46
70
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-namespace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wanstrath
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-15 00:00:00 -08:00
12
+ date: 2010-01-25 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15