redis-store 1.0.0.beta5 → 1.0.0.rc1
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 +11 -0
- data/README.md +28 -16
- data/VERSION +1 -1
- data/lib/active_support/cache/redis_store.rb +12 -2
- data/lib/cache/merb/redis_store.rb +6 -2
- data/lib/cache/sinatra/redis_store.rb +5 -1
- data/lib/rack/cache/redis_entitystore.rb +1 -4
- data/lib/rack/cache/redis_metastore.rb +1 -4
- data/lib/redis/store/version.rb +1 -1
- data/redis-store.gemspec +5 -9
- data/spec/cache/merb/redis_store_spec.rb +1 -1
- data/spec/cache/sinatra/redis_store_spec.rb +1 -1
- data/spec/redis/store/version_spec.rb +1 -1
- data/tasks/redis.tasks.rb +1 -1
- metadata +7 -24
data/CHANGELOG
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
*1.0.0 [rc1] (June 5, 2011)*
|
2
|
+
|
3
|
+
* Bump version v1.0.0.rc1
|
4
|
+
* Re-implement the delete_entry because it s needed by the ActiveSupport::Cache [Cyril Mougel]
|
5
|
+
* Change readme documentation for rack-cache to use single redis database with namespace support per Redis maintainers recommendation [Travis D. Warlick, Jr.]
|
6
|
+
* Rack-Cache entity and meta store base classes should use the Redis::Factory.convert_to_redis_client_options method for DRYness and for namespace support [Travis D. Warlick, Jr.]
|
7
|
+
* Modify #fetch for cache stores to return the yielded value instead of OK [Rune Botten]
|
8
|
+
* Minor revisions to Readme language and organization [Jeff Casimir]
|
9
|
+
* Re-implement the delete_entry because it s needed by the ActiveSupport::Cache implementation in Rails 3 [Cyril Mougel]
|
10
|
+
* Refactor delete_matched [Andrei Kulakov]
|
11
|
+
|
1
12
|
*1.0.0 [beta5] (April 2, 2011)*
|
2
13
|
|
3
14
|
* Bump version v1.0.0.beta5
|
data/README.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
## Installation
|
4
4
|
|
5
|
+
### Redis, Option 1: Homebrew
|
6
|
+
|
7
|
+
MacOS X users should use [Homebrew](https://github.com/mxcl/homebrew) to install Redis:
|
8
|
+
|
9
|
+
brew install redis
|
10
|
+
|
11
|
+
### Redis, Option 2: From Source
|
12
|
+
|
5
13
|
Download and install Redis from [http://code.google.com/p/redis/](http://code.google.com/p/redis/)
|
6
14
|
|
7
15
|
wget http://redis.googlecode.com/files/redis-2.0.0.tar.gz
|
@@ -10,32 +18,37 @@ Download and install Redis from [http://code.google.com/p/redis/](http://code.go
|
|
10
18
|
cd redis
|
11
19
|
make
|
12
20
|
|
13
|
-
Install the
|
21
|
+
### Install the Gem
|
14
22
|
|
15
|
-
|
23
|
+
Assuming you're using RVM or on Windows, install the gem with:
|
24
|
+
|
25
|
+
gem install redis-store
|
16
26
|
|
17
27
|
## Options
|
18
|
-
|
19
|
-
|
28
|
+
You can specify the Redis configuration details using a URI or a hash. By default the gem will attempt to connect to `localhost` port `6379` and the db `0`.
|
29
|
+
|
30
|
+
### Set by URI
|
20
31
|
|
21
|
-
|
32
|
+
For example
|
22
33
|
|
23
34
|
"redis://:secret@192.168.1.100:23682/13/theplaylist"
|
24
35
|
|
36
|
+
Made up of the following:
|
37
|
+
|
25
38
|
host: 192.168.1.100
|
26
39
|
port: 23682
|
27
40
|
db: 13
|
28
41
|
namespace: theplaylist
|
29
42
|
password: secret
|
30
43
|
|
31
|
-
If you want to specify the `namespace`
|
32
|
-
#### __Important__: for now (
|
44
|
+
If you want to specify the `namespace` option, you have to pass the `db` param too.
|
45
|
+
#### __Important__: for now (rc1) `namespace` is only supported for single, non-distributed stores.
|
33
46
|
|
34
|
-
### Hash
|
47
|
+
### Set by Hash
|
35
48
|
|
36
49
|
{ :host => 192.168.1.100, :port => 23682, :db => 13, :namespace => "theplaylist", :password => "secret" }
|
37
50
|
|
38
|
-
#### __Important__: for now (
|
51
|
+
#### __Important__: for now (rc1) `namespace` is only supported for single, non-distributed stores.
|
39
52
|
|
40
53
|
## Cache store
|
41
54
|
|
@@ -58,9 +71,8 @@ Provides a cache store for your Ruby web framework of choice.
|
|
58
71
|
### Rails 3.x
|
59
72
|
|
60
73
|
# Gemfile
|
61
|
-
gem 'rails', '3.0.3'
|
62
74
|
gem 'redis'
|
63
|
-
gem 'redis-store', '1.0.0.
|
75
|
+
gem 'redis-store', '1.0.0.rc1'
|
64
76
|
|
65
77
|
# config/environments/production.rb
|
66
78
|
config.cache_store = :redis_store, { ... optional configuration ... }
|
@@ -69,7 +81,7 @@ For advanced configurations scenarios please visit [the wiki](https://github.com
|
|
69
81
|
|
70
82
|
### Merb
|
71
83
|
|
72
|
-
dependency "redis-store", "1.0.0.
|
84
|
+
dependency "redis-store", "1.0.0.rc1"
|
73
85
|
dependency("merb-cache", merb_gems_version) do
|
74
86
|
Merb::Cache.setup do
|
75
87
|
register(:redis, Merb::Cache::RedisStore, :servers => ["127.0.0.1:6379"])
|
@@ -150,7 +162,7 @@ Provides a Redis store for Rack::Session. See [http://rack.rubyforge.org/doc/Rac
|
|
150
162
|
# Gemfile
|
151
163
|
gem 'rails', '3.0.3'
|
152
164
|
gem 'redis'
|
153
|
-
gem 'redis-store', '1.0.0.
|
165
|
+
gem 'redis-store', '1.0.0.rc1'
|
154
166
|
|
155
167
|
# config/initializers/session_store.rb
|
156
168
|
MyApp::Application.config.session_store :redis_session_store
|
@@ -159,7 +171,7 @@ For advanced configurations scenarios please visit [the wiki](https://github.com
|
|
159
171
|
|
160
172
|
### Merb
|
161
173
|
|
162
|
-
dependency "redis-store", "1.0.0.
|
174
|
+
dependency "redis-store", "1.0.0.rc1"
|
163
175
|
Merb::Config.use do |c|
|
164
176
|
c[:session_store] = "redis"
|
165
177
|
end
|
@@ -192,8 +204,8 @@ Provides a Redis store for HTTP caching. See [http://github.com/rtomayko/rack-ca
|
|
192
204
|
require "redis-store"
|
193
205
|
require "application"
|
194
206
|
use Rack::Cache,
|
195
|
-
:metastore => 'redis://localhost:6379/0',
|
196
|
-
:entitystore => 'redis://localhost:6380/
|
207
|
+
:metastore => 'redis://localhost:6379/0/metastore',
|
208
|
+
:entitystore => 'redis://localhost:6380/0/entitystore'
|
197
209
|
run Application.new
|
198
210
|
|
199
211
|
## I18n
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.0.
|
1
|
+
1.0.0.rc1
|
@@ -54,7 +54,7 @@ module ::RedisStore
|
|
54
54
|
# cache.del_matched "rab*"
|
55
55
|
def delete_matched(matcher, options = nil)
|
56
56
|
instrument(:delete_matched, matcher, options) do
|
57
|
-
@data.keys(matcher).
|
57
|
+
!(keys = @data.keys(matcher)).empty? && @data.del(*keys)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -99,7 +99,11 @@ module ::RedisStore
|
|
99
99
|
options = merged_options(options)
|
100
100
|
instrument(:delete_matched, matcher.inspect) do
|
101
101
|
matcher = key_matcher(matcher, options)
|
102
|
-
|
102
|
+
begin
|
103
|
+
!(keys = @data.keys(matcher)).empty? && @data.del(*keys)
|
104
|
+
rescue Errno::ECONNREFUSED => e
|
105
|
+
false
|
106
|
+
end
|
103
107
|
end
|
104
108
|
end
|
105
109
|
|
@@ -120,12 +124,18 @@ module ::RedisStore
|
|
120
124
|
nil
|
121
125
|
end
|
122
126
|
|
127
|
+
##
|
128
|
+
# Implement the ActiveSupport::Cache#delete_entry
|
129
|
+
#
|
130
|
+
# It's really needed and use
|
131
|
+
#
|
123
132
|
def delete_entry(key, options)
|
124
133
|
@data.del key
|
125
134
|
rescue Errno::ECONNREFUSED => e
|
126
135
|
false
|
127
136
|
end
|
128
137
|
|
138
|
+
|
129
139
|
# Add the namespace defined in the options to a pattern designed to match keys.
|
130
140
|
#
|
131
141
|
# This implementation is __different__ than ActiveSupport:
|
@@ -45,9 +45,13 @@ module Merb
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def fetch(key, parameters = {}, conditions = {}, &blk)
|
48
|
-
read(key, parameters) ||
|
48
|
+
(data = read(key, parameters)) || block_given? && begin
|
49
|
+
data = yield
|
50
|
+
write(key, data, parameters, conditions)
|
51
|
+
end
|
52
|
+
data || nil
|
49
53
|
end
|
50
|
-
|
54
|
+
|
51
55
|
def exists?(key, parameters = {})
|
52
56
|
@data.exists normalize(key, parameters)
|
53
57
|
end
|
@@ -111,7 +111,11 @@ module Sinatra
|
|
111
111
|
end
|
112
112
|
|
113
113
|
def fetch(key, options = {})
|
114
|
-
(!options[:force] && data = read(key, options)) ||
|
114
|
+
(!options[:force] && data = read(key, options)) || block_given? && begin
|
115
|
+
data = yield
|
116
|
+
write(key, data, options)
|
117
|
+
end
|
118
|
+
data || nil
|
115
119
|
end
|
116
120
|
|
117
121
|
# Clear all the data from the store.
|
@@ -13,10 +13,7 @@ module Rack
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.resolve(uri)
|
16
|
-
|
17
|
-
db = "0" if db.empty?
|
18
|
-
server = { :host => uri.host, :port => uri.port || "6379", :db => db, :password => uri.password }
|
19
|
-
new server
|
16
|
+
new ::Redis::Factory.convert_to_redis_client_options(uri.to_s)
|
20
17
|
end
|
21
18
|
end
|
22
19
|
|
@@ -8,10 +8,7 @@ module Rack
|
|
8
8
|
attr_reader :cache
|
9
9
|
|
10
10
|
def self.resolve(uri)
|
11
|
-
|
12
|
-
db = "0" if db.empty?
|
13
|
-
server = { :host => uri.host, :port => uri.port || "6379", :db => db, :password => uri.password }
|
14
|
-
new server
|
11
|
+
new ::Redis::Factory.convert_to_redis_client_options(uri.to_s)
|
15
12
|
end
|
16
13
|
end
|
17
14
|
|
data/lib/redis/store/version.rb
CHANGED
data/redis-store.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{redis-store}
|
8
|
-
s.version = "1.0.0.
|
8
|
+
s.version = "1.0.0.rc1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{2011-
|
11
|
+
s.authors = [%q{Luca Guidi}]
|
12
|
+
s.date = %q{2011-06-05}
|
13
13
|
s.description = %q{Namespaced Rack::Session, Rack::Cache, I18n and cache Redis stores for Ruby web frameworks.}
|
14
14
|
s.email = %q{guidi.luca@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -65,8 +65,8 @@ Gem::Specification.new do |s|
|
|
65
65
|
"tasks/redis.tasks.rb"
|
66
66
|
]
|
67
67
|
s.homepage = %q{http://github.com/jodosha/redis-store}
|
68
|
-
s.require_paths = [
|
69
|
-
s.rubygems_version = %q{1.
|
68
|
+
s.require_paths = [%q{lib}]
|
69
|
+
s.rubygems_version = %q{1.8.5}
|
70
70
|
s.summary = %q{Namespaced Rack::Session, Rack::Cache, I18n and cache Redis stores for Ruby web frameworks.}
|
71
71
|
s.test_files = [
|
72
72
|
"spec/action_controller/session/redis_session_store_spec.rb",
|
@@ -88,7 +88,6 @@ Gem::Specification.new do |s|
|
|
88
88
|
]
|
89
89
|
|
90
90
|
if s.respond_to? :specification_version then
|
91
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
92
91
|
s.specification_version = 3
|
93
92
|
|
94
93
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
@@ -100,7 +99,6 @@ Gem::Specification.new do |s|
|
|
100
99
|
s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
|
101
100
|
s.add_development_dependency(%q<i18n>, [">= 0"])
|
102
101
|
s.add_development_dependency(%q<ruby-debug>, [">= 0"])
|
103
|
-
s.add_runtime_dependency(%q<redis>, [">= 2.0.0"])
|
104
102
|
else
|
105
103
|
s.add_dependency(%q<redis>, ["~> 2.2.0"])
|
106
104
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
@@ -110,7 +108,6 @@ Gem::Specification.new do |s|
|
|
110
108
|
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
111
109
|
s.add_dependency(%q<i18n>, [">= 0"])
|
112
110
|
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
113
|
-
s.add_dependency(%q<redis>, [">= 2.0.0"])
|
114
111
|
end
|
115
112
|
else
|
116
113
|
s.add_dependency(%q<redis>, ["~> 2.2.0"])
|
@@ -121,7 +118,6 @@ Gem::Specification.new do |s|
|
|
121
118
|
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
122
119
|
s.add_dependency(%q<i18n>, [">= 0"])
|
123
120
|
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
124
|
-
s.add_dependency(%q<redis>, [">= 2.0.0"])
|
125
121
|
end
|
126
122
|
end
|
127
123
|
|
@@ -96,7 +96,7 @@ module Merb
|
|
96
96
|
with_store_management do |store|
|
97
97
|
store.fetch("rabbit").should == @rabbit
|
98
98
|
store.fetch("rub-a-dub").should be_nil
|
99
|
-
store.fetch("rub-a-dub") { "Flora de Cana" }
|
99
|
+
store.fetch("rub-a-dub") { "Flora de Cana" }.should == "Flora de Cana"
|
100
100
|
store.fetch("rub-a-dub").should === "Flora de Cana"
|
101
101
|
end
|
102
102
|
end
|
@@ -169,7 +169,7 @@ module Sinatra
|
|
169
169
|
with_store_management do |store|
|
170
170
|
store.fetch("rabbit").should == @rabbit
|
171
171
|
store.fetch("rub-a-dub").should be_nil
|
172
|
-
store.fetch("rub-a-dub") { "Flora de Cana" }
|
172
|
+
store.fetch("rub-a-dub") { "Flora de Cana" }.should == "Flora de Cana"
|
173
173
|
store.fetch("rub-a-dub").should === "Flora de Cana"
|
174
174
|
store.fetch("rabbit", :force => true).should be_nil # force cache miss
|
175
175
|
store.fetch("rabbit", :force => true, :expires_in => 1.second) { @white_rabbit }
|
data/tasks/redis.tasks.rb
CHANGED
@@ -154,7 +154,7 @@ namespace :redis do
|
|
154
154
|
|
155
155
|
commit = case ENV['VERSION']
|
156
156
|
when "1.2.6" then "570e43c8285a4e5e3f31"
|
157
|
-
when "2.2.
|
157
|
+
when "2.2.4" then "2b886275e9756bb8619a"
|
158
158
|
end
|
159
159
|
|
160
160
|
arguments = commit.nil? ? "pull origin master" : "reset --hard #{commit}"
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 15424055
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
|
10
|
+
- rc
|
11
|
+
- 1
|
12
|
+
version: 1.0.0.rc1
|
12
13
|
platform: ruby
|
13
14
|
authors:
|
14
15
|
- Luca Guidi
|
@@ -16,8 +17,7 @@ autorequire:
|
|
16
17
|
bindir: bin
|
17
18
|
cert_chain: []
|
18
19
|
|
19
|
-
date: 2011-
|
20
|
-
default_executable:
|
20
|
+
date: 2011-06-05 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: redis
|
@@ -137,22 +137,6 @@ dependencies:
|
|
137
137
|
version: "0"
|
138
138
|
type: :development
|
139
139
|
version_requirements: *id008
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: redis
|
142
|
-
prerelease: false
|
143
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
144
|
-
none: false
|
145
|
-
requirements:
|
146
|
-
- - ">="
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
hash: 15
|
149
|
-
segments:
|
150
|
-
- 2
|
151
|
-
- 0
|
152
|
-
- 0
|
153
|
-
version: 2.0.0
|
154
|
-
type: :runtime
|
155
|
-
version_requirements: *id009
|
156
140
|
description: Namespaced Rack::Session, Rack::Cache, I18n and cache Redis stores for Ruby web frameworks.
|
157
141
|
email: guidi.luca@gmail.com
|
158
142
|
executables: []
|
@@ -209,7 +193,6 @@ files:
|
|
209
193
|
- spec/redis/store_spec.rb
|
210
194
|
- spec/spec_helper.rb
|
211
195
|
- tasks/redis.tasks.rb
|
212
|
-
has_rdoc: true
|
213
196
|
homepage: http://github.com/jodosha/redis-store
|
214
197
|
licenses: []
|
215
198
|
|
@@ -241,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
224
|
requirements: []
|
242
225
|
|
243
226
|
rubyforge_project:
|
244
|
-
rubygems_version: 1.
|
227
|
+
rubygems_version: 1.8.5
|
245
228
|
signing_key:
|
246
229
|
specification_version: 3
|
247
230
|
summary: Namespaced Rack::Session, Rack::Cache, I18n and cache Redis stores for Ruby web frameworks.
|