redis-store 1.0.0.beta4 → 1.0.0.beta5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of redis-store might be problematic. Click here for more details.
- data/CHANGELOG +9 -0
- data/Gemfile +7 -6
- data/Gemfile.lock +8 -8
- data/README.md +20 -10
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/active_support/cache/redis_store.rb +11 -0
- data/lib/cache/sinatra/redis_store.rb +1 -0
- data/lib/redis/distributed_store.rb +4 -0
- data/lib/redis/store.rb +4 -0
- data/lib/redis/store/namespace.rb +10 -2
- data/lib/redis/store/version.rb +1 -1
- data/redis-store.gemspec +10 -11
- data/spec/active_support/cache/redis_store_spec.rb +6 -0
- data/spec/config/{master.conf → node-one.conf} +115 -10
- data/spec/config/{slave.conf → node-two.conf} +116 -11
- data/spec/config/{single.conf → redis.conf} +114 -9
- data/spec/i18n/backend/redis_spec.rb +22 -6
- data/spec/redis/distributed_store_spec.rb +8 -0
- data/spec/redis/store/namespace_spec.rb +2 -2
- data/spec/redis/store/version_spec.rb +1 -1
- data/spec/redis/store_spec.rb +13 -0
- data/tasks/redis.tasks.rb +27 -19
- metadata +24 -36
@@ -20,7 +20,8 @@ daemonize no
|
|
20
20
|
# default. You can specify a custom pid file location here.
|
21
21
|
pidfile /var/run/redis.pid
|
22
22
|
|
23
|
-
# Accept connections on the specified port, default is 6379
|
23
|
+
# Accept connections on the specified port, default is 6379.
|
24
|
+
# If port 0 is specified Redis will not listen on a TCP socket.
|
24
25
|
port 6381
|
25
26
|
|
26
27
|
# If you want you can bind a single interface, if the bind option is not
|
@@ -28,6 +29,12 @@ port 6381
|
|
28
29
|
#
|
29
30
|
# bind 127.0.0.1
|
30
31
|
|
32
|
+
# Specify the path for the unix socket that will be used to listen for
|
33
|
+
# incoming connections. There is no default, so Redis will not listen
|
34
|
+
# on a unix socket when not specified.
|
35
|
+
#
|
36
|
+
# unixsocket /tmp/redis.sock
|
37
|
+
|
31
38
|
# Close the connection after a client is idle for N seconds (0 to disable)
|
32
39
|
timeout 300
|
33
40
|
|
@@ -37,13 +44,23 @@ timeout 300
|
|
37
44
|
# verbose (many rarely useful info, but not a mess like the debug level)
|
38
45
|
# notice (moderately verbose, what you want in production probably)
|
39
46
|
# warning (only very important / critical messages are logged)
|
40
|
-
loglevel
|
47
|
+
loglevel verbose
|
41
48
|
|
42
49
|
# Specify the log file name. Also 'stdout' can be used to force
|
43
50
|
# Redis to log on the standard output. Note that if you use standard
|
44
51
|
# output for logging but daemonize, logs will be sent to /dev/null
|
45
52
|
logfile stdout
|
46
53
|
|
54
|
+
# To enable logging to the system logger, just set 'syslog-enabled' to yes,
|
55
|
+
# and optionally update the other syslog parameters to suit your needs.
|
56
|
+
# syslog-enabled no
|
57
|
+
|
58
|
+
# Specify the syslog identity.
|
59
|
+
# syslog-ident redis
|
60
|
+
|
61
|
+
# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
|
62
|
+
# syslog-facility local0
|
63
|
+
|
47
64
|
# Set the number of databases. The default database is DB 0, you can select
|
48
65
|
# a different one on a per-connection basis using SELECT <dbid> where
|
49
66
|
# dbid is a number between 0 and 'databases'-1
|
@@ -76,7 +93,7 @@ save 60 10000
|
|
76
93
|
rdbcompression yes
|
77
94
|
|
78
95
|
# The filename where to dump the DB
|
79
|
-
dbfilename tmp/
|
96
|
+
dbfilename tmp/node-two-dump.rdb
|
80
97
|
|
81
98
|
# The working directory.
|
82
99
|
#
|
@@ -95,7 +112,7 @@ dir ./
|
|
95
112
|
# so for example it is possible to configure the slave to save the DB with a
|
96
113
|
# different interval, or to listen to another port, and so on.
|
97
114
|
#
|
98
|
-
slaveof 127.0.0.1 6380
|
115
|
+
# slaveof 127.0.0.1 6380
|
99
116
|
|
100
117
|
# If the master is password protected (using the "requirepass" configuration
|
101
118
|
# directive below) it is possible to tell the slave to authenticate before
|
@@ -104,6 +121,19 @@ slaveof 127.0.0.1 6380
|
|
104
121
|
#
|
105
122
|
# masterauth <master-password>
|
106
123
|
|
124
|
+
# When a slave lost the connection with the master, or when the replication
|
125
|
+
# is still in progress, the slave can act in two different ways:
|
126
|
+
#
|
127
|
+
# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will
|
128
|
+
# still reply to client requests, possibly with out of data data, or the
|
129
|
+
# data set may just be empty if this is the first synchronization.
|
130
|
+
#
|
131
|
+
# 2) if slave-serve-stale data is set to 'no' the slave will reply with
|
132
|
+
# an error "SYNC with master in progress" to all the kind of commands
|
133
|
+
# but to INFO and SLAVEOF.
|
134
|
+
#
|
135
|
+
slave-serve-stale-data yes
|
136
|
+
|
107
137
|
################################## SECURITY ###################################
|
108
138
|
|
109
139
|
# Require clients to issue AUTH <PASSWORD> before processing any other
|
@@ -119,6 +149,22 @@ slaveof 127.0.0.1 6380
|
|
119
149
|
#
|
120
150
|
# requirepass foobared
|
121
151
|
|
152
|
+
# Command renaming.
|
153
|
+
#
|
154
|
+
# It is possilbe to change the name of dangerous commands in a shared
|
155
|
+
# environment. For instance the CONFIG command may be renamed into something
|
156
|
+
# of hard to guess so that it will be still available for internal-use
|
157
|
+
# tools but not available for general clients.
|
158
|
+
#
|
159
|
+
# Example:
|
160
|
+
#
|
161
|
+
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
|
162
|
+
#
|
163
|
+
# It is also possilbe to completely kill a command renaming it into
|
164
|
+
# an empty string:
|
165
|
+
#
|
166
|
+
# rename-command CONFIG ""
|
167
|
+
|
122
168
|
################################### LIMITS ####################################
|
123
169
|
|
124
170
|
# Set the max number of connected clients at the same time. By default there
|
@@ -148,6 +194,37 @@ slaveof 127.0.0.1 6380
|
|
148
194
|
#
|
149
195
|
# maxmemory <bytes>
|
150
196
|
|
197
|
+
# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
|
198
|
+
# is reached? You can select among five behavior:
|
199
|
+
#
|
200
|
+
# volatile-lru -> remove the key with an expire set using an LRU algorithm
|
201
|
+
# allkeys-lru -> remove any key accordingly to the LRU algorithm
|
202
|
+
# volatile-random -> remove a random key with an expire set
|
203
|
+
# allkeys->random -> remove a random key, any key
|
204
|
+
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
|
205
|
+
# noeviction -> don't expire at all, just return an error on write operations
|
206
|
+
#
|
207
|
+
# Note: with all the kind of policies, Redis will return an error on write
|
208
|
+
# operations, when there are not suitable keys for eviction.
|
209
|
+
#
|
210
|
+
# At the date of writing this commands are: set setnx setex append
|
211
|
+
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
|
212
|
+
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
|
213
|
+
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
|
214
|
+
# getset mset msetnx exec sort
|
215
|
+
#
|
216
|
+
# The default is:
|
217
|
+
#
|
218
|
+
# maxmemory-policy volatile-lru
|
219
|
+
|
220
|
+
# LRU and minimal TTL algorithms are not precise algorithms but approximated
|
221
|
+
# algorithms (in order to save memory), so you can select as well the sample
|
222
|
+
# size to check. For instance for default Redis will check three keys and
|
223
|
+
# pick the one that was used less recently, you can change the sample size
|
224
|
+
# using the following configuration directive.
|
225
|
+
#
|
226
|
+
# maxmemory-samples 3
|
227
|
+
|
151
228
|
############################## APPEND ONLY MODE ###############################
|
152
229
|
|
153
230
|
# By default Redis asynchronously dumps the dataset on disk. If you can live
|
@@ -195,6 +272,26 @@ appendonly no
|
|
195
272
|
appendfsync everysec
|
196
273
|
# appendfsync no
|
197
274
|
|
275
|
+
# When the AOF fsync policy is set to always or everysec, and a background
|
276
|
+
# saving process (a background save or AOF log background rewriting) is
|
277
|
+
# performing a lot of I/O against the disk, in some Linux configurations
|
278
|
+
# Redis may block too long on the fsync() call. Note that there is no fix for
|
279
|
+
# this currently, as even performing fsync in a different thread will block
|
280
|
+
# our synchronous write(2) call.
|
281
|
+
#
|
282
|
+
# In order to mitigate this problem it's possible to use the following option
|
283
|
+
# that will prevent fsync() from being called in the main process while a
|
284
|
+
# BGSAVE or BGREWRITEAOF is in progress.
|
285
|
+
#
|
286
|
+
# This means that while another child is saving the durability of Redis is
|
287
|
+
# the same as "appendfsync none", that in pratical terms means that it is
|
288
|
+
# possible to lost up to 30 seconds of log in the worst scenario (with the
|
289
|
+
# default Linux settings).
|
290
|
+
#
|
291
|
+
# If you have latency problems turn this to "yes". Otherwise leave it as
|
292
|
+
# "no" that is the safest pick from the point of view of durability.
|
293
|
+
no-appendfsync-on-rewrite no
|
294
|
+
|
198
295
|
################################ VIRTUAL MEMORY ###############################
|
199
296
|
|
200
297
|
# Virtual Memory allows Redis to work with datasets bigger than the actual
|
@@ -269,17 +366,25 @@ vm-max-threads 4
|
|
269
366
|
|
270
367
|
############################### ADVANCED CONFIG ###############################
|
271
368
|
|
272
|
-
# Glue small output buffers together in order to send small replies in a
|
273
|
-
# single TCP packet. Uses a bit more CPU but most of the times it is a win
|
274
|
-
# in terms of number of queries per second. Use 'yes' if unsure.
|
275
|
-
glueoutputbuf yes
|
276
|
-
|
277
369
|
# Hashes are encoded in a special way (much more memory efficient) when they
|
278
370
|
# have at max a given numer of elements, and the biggest element does not
|
279
371
|
# exceed a given threshold. You can configure this limits with the following
|
280
372
|
# configuration directives.
|
281
|
-
hash-max-zipmap-entries
|
282
|
-
hash-max-zipmap-value
|
373
|
+
hash-max-zipmap-entries 512
|
374
|
+
hash-max-zipmap-value 64
|
375
|
+
|
376
|
+
# Similarly to hashes, small lists are also encoded in a special way in order
|
377
|
+
# to save a lot of space. The special representation is only used when
|
378
|
+
# you are under the following limits:
|
379
|
+
list-max-ziplist-entries 512
|
380
|
+
list-max-ziplist-value 64
|
381
|
+
|
382
|
+
# Sets have a special encoding in just one case: when a set is composed
|
383
|
+
# of just strings that happens to be integers in radix 10 in the range
|
384
|
+
# of 64 bit signed integers.
|
385
|
+
# The following configuration setting sets the limit in the size of the
|
386
|
+
# set in order to use this special memory saving encoding.
|
387
|
+
set-max-intset-entries 512
|
283
388
|
|
284
389
|
# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in
|
285
390
|
# order to help rehashing the main Redis hash table (the one mapping top-level
|
@@ -20,7 +20,8 @@ daemonize no
|
|
20
20
|
# default. You can specify a custom pid file location here.
|
21
21
|
pidfile /var/run/redis.pid
|
22
22
|
|
23
|
-
# Accept connections on the specified port, default is 6379
|
23
|
+
# Accept connections on the specified port, default is 6379.
|
24
|
+
# If port 0 is specified Redis will not listen on a TCP socket.
|
24
25
|
port 6379
|
25
26
|
|
26
27
|
# If you want you can bind a single interface, if the bind option is not
|
@@ -28,6 +29,12 @@ port 6379
|
|
28
29
|
#
|
29
30
|
# bind 127.0.0.1
|
30
31
|
|
32
|
+
# Specify the path for the unix socket that will be used to listen for
|
33
|
+
# incoming connections. There is no default, so Redis will not listen
|
34
|
+
# on a unix socket when not specified.
|
35
|
+
#
|
36
|
+
# unixsocket /tmp/redis.sock
|
37
|
+
|
31
38
|
# Close the connection after a client is idle for N seconds (0 to disable)
|
32
39
|
timeout 300
|
33
40
|
|
@@ -37,13 +44,23 @@ timeout 300
|
|
37
44
|
# verbose (many rarely useful info, but not a mess like the debug level)
|
38
45
|
# notice (moderately verbose, what you want in production probably)
|
39
46
|
# warning (only very important / critical messages are logged)
|
40
|
-
loglevel
|
47
|
+
loglevel verbose
|
41
48
|
|
42
49
|
# Specify the log file name. Also 'stdout' can be used to force
|
43
50
|
# Redis to log on the standard output. Note that if you use standard
|
44
51
|
# output for logging but daemonize, logs will be sent to /dev/null
|
45
52
|
logfile stdout
|
46
53
|
|
54
|
+
# To enable logging to the system logger, just set 'syslog-enabled' to yes,
|
55
|
+
# and optionally update the other syslog parameters to suit your needs.
|
56
|
+
# syslog-enabled no
|
57
|
+
|
58
|
+
# Specify the syslog identity.
|
59
|
+
# syslog-ident redis
|
60
|
+
|
61
|
+
# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
|
62
|
+
# syslog-facility local0
|
63
|
+
|
47
64
|
# Set the number of databases. The default database is DB 0, you can select
|
48
65
|
# a different one on a per-connection basis using SELECT <dbid> where
|
49
66
|
# dbid is a number between 0 and 'databases'-1
|
@@ -104,6 +121,19 @@ dir ./
|
|
104
121
|
#
|
105
122
|
# masterauth <master-password>
|
106
123
|
|
124
|
+
# When a slave lost the connection with the master, or when the replication
|
125
|
+
# is still in progress, the slave can act in two different ways:
|
126
|
+
#
|
127
|
+
# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will
|
128
|
+
# still reply to client requests, possibly with out of data data, or the
|
129
|
+
# data set may just be empty if this is the first synchronization.
|
130
|
+
#
|
131
|
+
# 2) if slave-serve-stale data is set to 'no' the slave will reply with
|
132
|
+
# an error "SYNC with master in progress" to all the kind of commands
|
133
|
+
# but to INFO and SLAVEOF.
|
134
|
+
#
|
135
|
+
slave-serve-stale-data yes
|
136
|
+
|
107
137
|
################################## SECURITY ###################################
|
108
138
|
|
109
139
|
# Require clients to issue AUTH <PASSWORD> before processing any other
|
@@ -119,6 +149,22 @@ dir ./
|
|
119
149
|
#
|
120
150
|
# requirepass foobared
|
121
151
|
|
152
|
+
# Command renaming.
|
153
|
+
#
|
154
|
+
# It is possilbe to change the name of dangerous commands in a shared
|
155
|
+
# environment. For instance the CONFIG command may be renamed into something
|
156
|
+
# of hard to guess so that it will be still available for internal-use
|
157
|
+
# tools but not available for general clients.
|
158
|
+
#
|
159
|
+
# Example:
|
160
|
+
#
|
161
|
+
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
|
162
|
+
#
|
163
|
+
# It is also possilbe to completely kill a command renaming it into
|
164
|
+
# an empty string:
|
165
|
+
#
|
166
|
+
# rename-command CONFIG ""
|
167
|
+
|
122
168
|
################################### LIMITS ####################################
|
123
169
|
|
124
170
|
# Set the max number of connected clients at the same time. By default there
|
@@ -148,6 +194,37 @@ dir ./
|
|
148
194
|
#
|
149
195
|
# maxmemory <bytes>
|
150
196
|
|
197
|
+
# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
|
198
|
+
# is reached? You can select among five behavior:
|
199
|
+
#
|
200
|
+
# volatile-lru -> remove the key with an expire set using an LRU algorithm
|
201
|
+
# allkeys-lru -> remove any key accordingly to the LRU algorithm
|
202
|
+
# volatile-random -> remove a random key with an expire set
|
203
|
+
# allkeys->random -> remove a random key, any key
|
204
|
+
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
|
205
|
+
# noeviction -> don't expire at all, just return an error on write operations
|
206
|
+
#
|
207
|
+
# Note: with all the kind of policies, Redis will return an error on write
|
208
|
+
# operations, when there are not suitable keys for eviction.
|
209
|
+
#
|
210
|
+
# At the date of writing this commands are: set setnx setex append
|
211
|
+
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
|
212
|
+
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
|
213
|
+
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
|
214
|
+
# getset mset msetnx exec sort
|
215
|
+
#
|
216
|
+
# The default is:
|
217
|
+
#
|
218
|
+
# maxmemory-policy volatile-lru
|
219
|
+
|
220
|
+
# LRU and minimal TTL algorithms are not precise algorithms but approximated
|
221
|
+
# algorithms (in order to save memory), so you can select as well the sample
|
222
|
+
# size to check. For instance for default Redis will check three keys and
|
223
|
+
# pick the one that was used less recently, you can change the sample size
|
224
|
+
# using the following configuration directive.
|
225
|
+
#
|
226
|
+
# maxmemory-samples 3
|
227
|
+
|
151
228
|
############################## APPEND ONLY MODE ###############################
|
152
229
|
|
153
230
|
# By default Redis asynchronously dumps the dataset on disk. If you can live
|
@@ -195,6 +272,26 @@ appendonly no
|
|
195
272
|
appendfsync everysec
|
196
273
|
# appendfsync no
|
197
274
|
|
275
|
+
# When the AOF fsync policy is set to always or everysec, and a background
|
276
|
+
# saving process (a background save or AOF log background rewriting) is
|
277
|
+
# performing a lot of I/O against the disk, in some Linux configurations
|
278
|
+
# Redis may block too long on the fsync() call. Note that there is no fix for
|
279
|
+
# this currently, as even performing fsync in a different thread will block
|
280
|
+
# our synchronous write(2) call.
|
281
|
+
#
|
282
|
+
# In order to mitigate this problem it's possible to use the following option
|
283
|
+
# that will prevent fsync() from being called in the main process while a
|
284
|
+
# BGSAVE or BGREWRITEAOF is in progress.
|
285
|
+
#
|
286
|
+
# This means that while another child is saving the durability of Redis is
|
287
|
+
# the same as "appendfsync none", that in pratical terms means that it is
|
288
|
+
# possible to lost up to 30 seconds of log in the worst scenario (with the
|
289
|
+
# default Linux settings).
|
290
|
+
#
|
291
|
+
# If you have latency problems turn this to "yes". Otherwise leave it as
|
292
|
+
# "no" that is the safest pick from the point of view of durability.
|
293
|
+
no-appendfsync-on-rewrite no
|
294
|
+
|
198
295
|
################################ VIRTUAL MEMORY ###############################
|
199
296
|
|
200
297
|
# Virtual Memory allows Redis to work with datasets bigger than the actual
|
@@ -269,17 +366,25 @@ vm-max-threads 4
|
|
269
366
|
|
270
367
|
############################### ADVANCED CONFIG ###############################
|
271
368
|
|
272
|
-
# Glue small output buffers together in order to send small replies in a
|
273
|
-
# single TCP packet. Uses a bit more CPU but most of the times it is a win
|
274
|
-
# in terms of number of queries per second. Use 'yes' if unsure.
|
275
|
-
glueoutputbuf yes
|
276
|
-
|
277
369
|
# Hashes are encoded in a special way (much more memory efficient) when they
|
278
370
|
# have at max a given numer of elements, and the biggest element does not
|
279
371
|
# exceed a given threshold. You can configure this limits with the following
|
280
372
|
# configuration directives.
|
281
|
-
hash-max-zipmap-entries
|
282
|
-
hash-max-zipmap-value
|
373
|
+
hash-max-zipmap-entries 512
|
374
|
+
hash-max-zipmap-value 64
|
375
|
+
|
376
|
+
# Similarly to hashes, small lists are also encoded in a special way in order
|
377
|
+
# to save a lot of space. The special representation is only used when
|
378
|
+
# you are under the following limits:
|
379
|
+
list-max-ziplist-entries 512
|
380
|
+
list-max-ziplist-value 64
|
381
|
+
|
382
|
+
# Sets have a special encoding in just one case: when a set is composed
|
383
|
+
# of just strings that happens to be integers in radix 10 in the range
|
384
|
+
# of 64 bit signed integers.
|
385
|
+
# The following configuration setting sets the limit in the size of the
|
386
|
+
# set in order to use this special memory saving encoding.
|
387
|
+
set-max-intset-entries 512
|
283
388
|
|
284
389
|
# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in
|
285
390
|
# order to help rehashing the main Redis hash table (the one mapping top-level
|
@@ -44,13 +44,29 @@ describe "I18n::Backend::Redis" do
|
|
44
44
|
lambda { I18n.backend.store_translations :en, :foo => lambda {|| } }.should raise_error("Key-value stores cannot handle procs")
|
45
45
|
end
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
describe "available locales" do
|
48
|
+
before :each do
|
49
|
+
@locales = [ :en, :it, :es, :fr, :de ]
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should list" do
|
53
|
+
@locales.each { |locale| I18n.backend.store_translations locale, :foo => "bar" }
|
54
|
+
available_locales = I18n.backend.available_locales
|
55
|
+
|
56
|
+
@locales.each do |locale|
|
57
|
+
available_locales.should include(locale)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should list when namespaced" do
|
62
|
+
I18n.backend = I18n::Backend::Redis.new :namespace => 'foo'
|
63
|
+
|
64
|
+
@locales.each { |locale| I18n.backend.store_translations locale, :foo => "bar" }
|
65
|
+
available_locales = I18n.backend.available_locales
|
51
66
|
|
52
|
-
|
53
|
-
|
67
|
+
@locales.each do |locale|
|
68
|
+
available_locales.should include(locale)
|
69
|
+
end
|
54
70
|
end
|
55
71
|
end
|
56
72
|
end
|
@@ -22,6 +22,14 @@ describe "Redis::DistributedStore" do
|
|
22
22
|
mr.to_s.should == "Redis Client connected to localhost:6380 against DB 1"
|
23
23
|
end
|
24
24
|
|
25
|
+
it "should force reconnection" do
|
26
|
+
@dmr.nodes.each do |node|
|
27
|
+
node.should_receive(:reconnect)
|
28
|
+
end
|
29
|
+
|
30
|
+
@dmr.reconnect
|
31
|
+
end
|
32
|
+
|
25
33
|
it "should set an object" do
|
26
34
|
@dmr.set "rabbit", @white_rabbit
|
27
35
|
@dmr.get("rabbit").should == @white_rabbit
|
@@ -50,8 +50,8 @@ describe "Redis::Store::Namespace" do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should namespace keys" do
|
53
|
-
@
|
54
|
-
@store.keys
|
53
|
+
@store.set "rabbit", @rabbit
|
54
|
+
@store.keys("rabb*").should == [ "rabbit" ]
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should namespace exists" do
|