redis-rack 1.4.0.rc → 1.4.0.rc2
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/Gemfile +2 -1
- data/Rakefile +0 -6
- data/lib/rack/session/redis.rb +4 -11
- data/lib/redis-rack.rb +2 -2
- data/lib/redis/rack/version.rb +1 -1
- data/redis-rack.gemspec +1 -1
- data/test/rack/session/redis_test.rb +18 -7
- data/test/redis/rack/version_test.rb +2 -2
- metadata +65 -124
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/lib/rack/session/redis.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rack/session/abstract/id'
|
2
2
|
require 'redis-store'
|
3
|
+
require 'thread'
|
3
4
|
|
4
5
|
module Rack
|
5
6
|
module Session
|
@@ -7,15 +8,13 @@ module Rack
|
|
7
8
|
attr_reader :mutex, :pool
|
8
9
|
|
9
10
|
DEFAULT_OPTIONS = Abstract::ID::DEFAULT_OPTIONS.merge \
|
10
|
-
:
|
11
|
-
:redis_server => 'redis://127.0.0.1:6379/0'
|
11
|
+
:redis_server => 'redis://127.0.0.1:6379/0/rack:session'
|
12
12
|
|
13
13
|
def initialize(app, options = {})
|
14
14
|
super
|
15
15
|
|
16
16
|
@mutex = Mutex.new
|
17
|
-
|
18
|
-
@pool = ::Redis::Factory.create options[:redis_server]
|
17
|
+
@pool = ::Redis::Factory.create @default_options[:redis_server]
|
19
18
|
end
|
20
19
|
|
21
20
|
def generate_sid
|
@@ -38,14 +37,8 @@ module Rack
|
|
38
37
|
end
|
39
38
|
|
40
39
|
def set_session(env, session_id, new_session, options)
|
41
|
-
expiry = options[:expire_after].to_i
|
42
40
|
with_lock(env, false) do
|
43
|
-
|
44
|
-
@pool.set session_id, new_session
|
45
|
-
else
|
46
|
-
@pool.setex session_id, (expiry + 1), new_session
|
47
|
-
end
|
48
|
-
|
41
|
+
@pool.set session_id, new_session, options
|
49
42
|
session_id
|
50
43
|
end
|
51
44
|
end
|
data/lib/redis-rack.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
require 'redis-store'
|
2
|
-
require 'redis
|
3
|
-
require 'rack/session/redis'
|
2
|
+
require 'redis/rack/version'
|
3
|
+
require 'rack/session/redis'
|
data/lib/redis/rack/version.rb
CHANGED
data/redis-rack.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_runtime_dependency 'redis-store', '1.1.0
|
21
|
+
s.add_runtime_dependency 'redis-store', '1.1.0'
|
22
22
|
s.add_runtime_dependency 'rack', '1.4.0'
|
23
23
|
|
24
24
|
s.add_development_dependency 'rake', '~> 0.9.2.2'
|
@@ -32,9 +32,19 @@ describe Rack::Session::Redis do
|
|
32
32
|
# }.must_raise(Exception)
|
33
33
|
# end
|
34
34
|
|
35
|
-
it "
|
35
|
+
it "uses the default Redis server and namespace when not provided" do
|
36
|
+
pool = Rack::Session::Redis.new(incrementor)
|
37
|
+
pool.pool.to_s.must_match(/127\.0\.0\.1:6379 against DB 0 with namespace rack:session$/)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "uses the specified namespace when provided" do
|
36
41
|
pool = Rack::Session::Redis.new(incrementor, :redis_server => {:namespace => 'test:rack:session'})
|
37
|
-
pool.pool.to_s.must_match(
|
42
|
+
pool.pool.to_s.must_match(/namespace test:rack:session$/)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "uses the specified Redis server when provided" do
|
46
|
+
pool = Rack::Session::Redis.new(incrementor, :redis_server => 'redis://127.0.0.1:6380/1')
|
47
|
+
pool.pool.to_s.must_match(/127\.0\.0\.1:6380 against DB 1$/)
|
38
48
|
end
|
39
49
|
|
40
50
|
it "creates a new cookie" do
|
@@ -92,14 +102,15 @@ describe Rack::Session::Redis do
|
|
92
102
|
res = Rack::MockRequest.new(pool).get('/')
|
93
103
|
res.body.must_include('"counter"=>1')
|
94
104
|
cookie = res["Set-Cookie"]
|
105
|
+
sid = cookie[session_match, 1]
|
95
106
|
res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
|
96
|
-
res["Set-Cookie"].must_equal(
|
107
|
+
res["Set-Cookie"][session_match, 1].must_equal(sid)
|
97
108
|
res.body.must_include('"counter"=>2')
|
98
109
|
puts 'Sleeping to expire session' if $DEBUG
|
99
110
|
sleep 4
|
100
111
|
res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
|
101
|
-
res["Set-Cookie"].wont_equal(
|
102
|
-
res.body.must_include('"counter"=>
|
112
|
+
res["Set-Cookie"][session_match, 1].wont_equal(sid)
|
113
|
+
res.body.must_include('"counter"=>1')
|
103
114
|
end
|
104
115
|
|
105
116
|
it "does not send the same session id if it did not change" do
|
@@ -107,7 +118,7 @@ describe Rack::Session::Redis do
|
|
107
118
|
req = Rack::MockRequest.new(pool)
|
108
119
|
|
109
120
|
res0 = req.get("/")
|
110
|
-
cookie = res0["Set-Cookie"]
|
121
|
+
cookie = res0["Set-Cookie"]
|
111
122
|
res0.body.must_equal('{"counter"=>1}')
|
112
123
|
|
113
124
|
res1 = req.get("/", "HTTP_COOKIE" => cookie)
|
@@ -275,4 +286,4 @@ describe Rack::Session::Redis do
|
|
275
286
|
session['counter'].must_be_nil
|
276
287
|
session['foo'].must_equal('bar')
|
277
288
|
end
|
278
|
-
end
|
289
|
+
end
|
metadata
CHANGED
@@ -1,147 +1,100 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-rack
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0.rc2
|
5
5
|
prerelease: 6
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
- 0
|
10
|
-
- rc
|
11
|
-
version: 1.4.0.rc
|
12
6
|
platform: ruby
|
13
|
-
authors:
|
7
|
+
authors:
|
14
8
|
- Luca Guidi
|
15
9
|
autorequire:
|
16
10
|
bindir: bin
|
17
11
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-14 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: redis-store
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70259388512620 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 1
|
33
|
-
- 0
|
34
|
-
- rc
|
35
|
-
version: 1.1.0.rc
|
18
|
+
requirements:
|
19
|
+
- - =
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.1.0
|
36
22
|
type: :runtime
|
37
|
-
version_requirements: *id001
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: rack
|
40
23
|
prerelease: false
|
41
|
-
|
24
|
+
version_requirements: *70259388512620
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rack
|
27
|
+
requirement: &70259388512120 !ruby/object:Gem::Requirement
|
42
28
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
hash: 7
|
47
|
-
segments:
|
48
|
-
- 1
|
49
|
-
- 4
|
50
|
-
- 0
|
29
|
+
requirements:
|
30
|
+
- - =
|
31
|
+
- !ruby/object:Gem::Version
|
51
32
|
version: 1.4.0
|
52
33
|
type: :runtime
|
53
|
-
version_requirements: *id002
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: rake
|
56
34
|
prerelease: false
|
57
|
-
|
35
|
+
version_requirements: *70259388512120
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &70259388511660 !ruby/object:Gem::Requirement
|
58
39
|
none: false
|
59
|
-
requirements:
|
40
|
+
requirements:
|
60
41
|
- - ~>
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
hash: 11
|
63
|
-
segments:
|
64
|
-
- 0
|
65
|
-
- 9
|
66
|
-
- 2
|
67
|
-
- 2
|
42
|
+
- !ruby/object:Gem::Version
|
68
43
|
version: 0.9.2.2
|
69
44
|
type: :development
|
70
|
-
version_requirements: *id003
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: bundler
|
73
45
|
prerelease: false
|
74
|
-
|
46
|
+
version_requirements: *70259388511660
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: bundler
|
49
|
+
requirement: &70259388511200 !ruby/object:Gem::Requirement
|
75
50
|
none: false
|
76
|
-
requirements:
|
51
|
+
requirements:
|
77
52
|
- - ~>
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
hash: 7712070
|
80
|
-
segments:
|
81
|
-
- 1
|
82
|
-
- 1
|
83
|
-
- rc
|
53
|
+
- !ruby/object:Gem::Version
|
84
54
|
version: 1.1.rc
|
85
55
|
type: :development
|
86
|
-
version_requirements: *id004
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: mocha
|
89
56
|
prerelease: false
|
90
|
-
|
57
|
+
version_requirements: *70259388511200
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: mocha
|
60
|
+
requirement: &70259388510740 !ruby/object:Gem::Requirement
|
91
61
|
none: false
|
92
|
-
requirements:
|
62
|
+
requirements:
|
93
63
|
- - ~>
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
hash: 55
|
96
|
-
segments:
|
97
|
-
- 0
|
98
|
-
- 10
|
99
|
-
- 0
|
64
|
+
- !ruby/object:Gem::Version
|
100
65
|
version: 0.10.0
|
101
66
|
type: :development
|
102
|
-
version_requirements: *id005
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: minitest
|
105
67
|
prerelease: false
|
106
|
-
|
68
|
+
version_requirements: *70259388510740
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: &70259388510280 !ruby/object:Gem::Requirement
|
107
72
|
none: false
|
108
|
-
requirements:
|
73
|
+
requirements:
|
109
74
|
- - ~>
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
hash: 47
|
112
|
-
segments:
|
113
|
-
- 2
|
114
|
-
- 8
|
115
|
-
- 0
|
75
|
+
- !ruby/object:Gem::Version
|
116
76
|
version: 2.8.0
|
117
77
|
type: :development
|
118
|
-
version_requirements: *id006
|
119
|
-
- !ruby/object:Gem::Dependency
|
120
|
-
name: purdytest
|
121
78
|
prerelease: false
|
122
|
-
|
79
|
+
version_requirements: *70259388510280
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: purdytest
|
82
|
+
requirement: &70259388509820 !ruby/object:Gem::Requirement
|
123
83
|
none: false
|
124
|
-
requirements:
|
84
|
+
requirements:
|
125
85
|
- - ~>
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
hash: 23
|
128
|
-
segments:
|
129
|
-
- 1
|
130
|
-
- 0
|
131
|
-
- 0
|
86
|
+
- !ruby/object:Gem::Version
|
132
87
|
version: 1.0.0
|
133
88
|
type: :development
|
134
|
-
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70259388509820
|
135
91
|
description: Redis Store for Rack
|
136
|
-
email:
|
92
|
+
email:
|
137
93
|
- guidi.luca@gmail.com
|
138
94
|
executables: []
|
139
|
-
|
140
95
|
extensions: []
|
141
|
-
|
142
96
|
extra_rdoc_files: []
|
143
|
-
|
144
|
-
files:
|
97
|
+
files:
|
145
98
|
- .gitignore
|
146
99
|
- Gemfile
|
147
100
|
- MIT-LICENSE
|
@@ -156,41 +109,29 @@ files:
|
|
156
109
|
- test/test_helper.rb
|
157
110
|
homepage: http://jodosha.github.com/redis-store
|
158
111
|
licenses: []
|
159
|
-
|
160
112
|
post_install_message:
|
161
113
|
rdoc_options: []
|
162
|
-
|
163
|
-
require_paths:
|
114
|
+
require_paths:
|
164
115
|
- lib
|
165
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
166
117
|
none: false
|
167
|
-
requirements:
|
168
|
-
- -
|
169
|
-
- !ruby/object:Gem::Version
|
170
|
-
|
171
|
-
|
172
|
-
- 0
|
173
|
-
version: "0"
|
174
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
123
|
none: false
|
176
|
-
requirements:
|
177
|
-
- -
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
hash: 25
|
180
|
-
segments:
|
181
|
-
- 1
|
182
|
-
- 3
|
183
|
-
- 1
|
124
|
+
requirements:
|
125
|
+
- - ! '>'
|
126
|
+
- !ruby/object:Gem::Version
|
184
127
|
version: 1.3.1
|
185
128
|
requirements: []
|
186
|
-
|
187
129
|
rubyforge_project: redis-rack
|
188
|
-
rubygems_version: 1.8.
|
130
|
+
rubygems_version: 1.8.15
|
189
131
|
signing_key:
|
190
132
|
specification_version: 3
|
191
133
|
summary: Redis Store for Rack
|
192
|
-
test_files:
|
134
|
+
test_files:
|
193
135
|
- test/rack/session/redis_test.rb
|
194
136
|
- test/redis/rack/version_test.rb
|
195
137
|
- test/test_helper.rb
|
196
|
-
has_rdoc:
|