redis-session-store 0.7.0 → 0.8.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4d846842edbd5ebc0a653e24f80ca303150c390
4
- data.tar.gz: be0006a20a902ca97e52e6907b90c9a1dfa22bdb
3
+ metadata.gz: 43c209eb4dbc6cc3feedd7138dcc6cfbb6e4be35
4
+ data.tar.gz: e29f05d4800a9bf8453ad3f24504295d5fd21408
5
5
  SHA512:
6
- metadata.gz: fa7412de4681ecc8646093aaa4920ae8b4b5683a814cbf9ef73d04003995aefa2c2f8a64371cc73c496dbe517b49b9b934cb6b9975cc754ba40403db82a3a0ca
7
- data.tar.gz: d250e8895eed17ad83493c0bcab9c92c05c6ca92e88f41f05ae11f06c7c97e51923d39ea1e6b017554453885f8111166ec025b6be4875b3611813f4a8e410a0b
6
+ metadata.gz: 91de3d098790b0d015bb463ecf28a21d5b84ba1eee2d7a2e8b2b6646231e6265b2c1933d99e825aa0ac8fa03945409b5b3ef03429e1d1599d8239f471f2ce1f0
7
+ data.tar.gz: 5797ce680e25ccb54e48cb4b5e2720be2287e7facedec7c28940b54a7f8fb1aa1bac91553797a01a02176650058032c3708e89b53b3d8506511472667620f7b7
data/.rubocop.yml CHANGED
@@ -1,15 +1,7 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2014-03-13 18:57:37 -0400 using RuboCop version 0.19.0.
3
- # The point is for the user to remove these configuration records
4
- # one by one as the offenses are removed from the code base.
5
- # Note that changes in the inspected code, or installation of new
6
- # versions of RuboCop, may require this file to be generated again.
1
+ inherit_from: .rubocop_todo.yml
7
2
 
8
- # Offense count: 1
9
3
  FileName:
10
4
  Enabled: false
11
5
 
12
- # Offense count: 1
13
- # Configuration parameters: CountComments.
14
- ClassLength:
15
- Max: 110
6
+ DoubleNegation:
7
+ Enabled: false
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,11 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`
2
+ # on 2014-08-28 08:17:48 -0400 using RuboCop version 0.25.0.
3
+ # The point is for the user to remove these configuration records
4
+ # one by one as the offenses are removed from the code base.
5
+ # Note that changes in the inspected code, or installation of new
6
+ # versions of RuboCop, may require this file to be generated again.
7
+
8
+ # Offense count: 1
9
+ # Configuration parameters: CountComments.
10
+ Metrics/ClassLength:
11
+ Max: 101
data/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  redis-session-store history
2
2
  ===========================
3
3
 
4
+ ## v0.8.0 (2014-08-28)
5
+
6
+ * Allow for injection of custom redis client
7
+ * Explicitly declare actionpack dependency
8
+ * Spec updates for rspec 3
9
+
4
10
  ## v0.7.0 (2014-04-22)
5
11
 
6
12
  * Fix issue #38, we now delay writing to redis until a session exists. This is
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ # vim:fileencoding=utf-8
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  gemspec
data/README.md CHANGED
@@ -18,12 +18,12 @@ see fit.
18
18
  This library doesn't offer anything related to caching, and is
19
19
  only suitable for Rails applications. For other frameworks or
20
20
  drop-in support for caching, check out
21
- [redis-store](http://github.com/jodosha/redis-store/)
21
+ [redis-store](http://github.com/jodosha/redis-store/).
22
22
 
23
23
  Installation
24
24
  ------------
25
25
 
26
- For Rails 3+, adding this to your Gemfile will do the trick.
26
+ For Rails 3+, adding this to your `Gemfile` will do the trick.
27
27
 
28
28
  ``` ruby
29
29
  gem 'redis-session-store'
@@ -57,6 +57,9 @@ callable handler may be provided as `on_redis_down`:
57
57
  My::Application.config.session_store :redis_session_store, {
58
58
  # ... other options ...
59
59
  on_redis_down: ->(e, env, sid) { do_something_will_ya!(e) }
60
+ redis: {
61
+ # ... redis options ...
62
+ }
60
63
  }
61
64
  ```
62
65
 
@@ -74,11 +77,14 @@ custom serializer:
74
77
  My::Application.config.session_store :redis_session_store, {
75
78
  # ... other options ...
76
79
  serializer: :hybrid
80
+ redis: {
81
+ # ... redis options ...
82
+ }
77
83
  }
78
84
  ```
79
85
 
80
86
  **Note**: Rails 4 is required for using the `:json` and `:hybrid` serializers
81
- because the `Flash` object doesn't serializer well in 3.2. See [Rails #13945](https://github.com/rails/rails/pull/13945) for more info.
87
+ because the `Flash` object doesn't serialize well in 3.2. See [Rails #13945](https://github.com/rails/rails/pull/13945) for more info.
82
88
 
83
89
  ### Session load error handling
84
90
 
@@ -90,6 +96,9 @@ will be given the error and the session ID.
90
96
  My::Application.config.session_store :redis_session_store, {
91
97
  # ... other options ...
92
98
  on_session_load_error: ->(e, sid) { do_something_will_ya!(e) }
99
+ redis: {
100
+ # ... redis options ...
101
+ }
93
102
  }
94
103
  ```
95
104
 
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ # vim:fileencoding=utf-8
1
2
  require 'bundler/gem_tasks'
2
3
  require 'rspec/core/rake_task'
3
4
  require 'rubocop/rake_task'
@@ -12,4 +13,4 @@ task :coverage do
12
13
  Rake::Task['spec'].invoke
13
14
  end
14
15
 
15
- Rubocop::RakeTask.new
16
+ RuboCop::RakeTask.new
@@ -4,7 +4,7 @@ require 'redis'
4
4
  # Redis session storage for Rails, and for Rails only. Derived from
5
5
  # the MemCacheStore code, simply dropping in Redis instead.
6
6
  class RedisSessionStore < ActionDispatch::Session::AbstractStore
7
- VERSION = '0.7.0'
7
+ VERSION = '0.8.0'
8
8
  # Rails 3.1 and beyond defines the constant elsewhere
9
9
  unless defined?(ENV_SESSION_OPTIONS_KEY)
10
10
  ENV_SESSION_OPTIONS_KEY = Rack::Session::Abstract::ENV_SESSION_OPTIONS_KEY
@@ -18,6 +18,7 @@ class RedisSessionStore < ActionDispatch::Session::AbstractStore
18
18
  # * +:db+ - Database number, defaults to 0.
19
19
  # * +:key_prefix+ - Prefix for keys used in Redis, e.g. +myapp:+
20
20
  # * +:expire_after+ - A number in seconds for session timeout
21
+ # * +:client+ - Connect to Redis with given object rather than create one
21
22
  # * +:on_redis_down:+ - Called with err, env, and SID on Errno::ECONNREFUSED
22
23
  # * +:on_session_load_error:+ - Called with err and SID on Marshal.load fail
23
24
  # * +:serializer:+ - Serializer to use on session data, default is :marshal.
@@ -44,7 +45,7 @@ class RedisSessionStore < ActionDispatch::Session::AbstractStore
44
45
 
45
46
  @default_options.merge!(namespace: 'rack:session')
46
47
  @default_options.merge!(redis_options)
47
- @redis = Redis.new(redis_options)
48
+ @redis = redis_options[:client] || Redis.new(redis_options)
48
49
  @on_redis_down = options[:on_redis_down]
49
50
  @serializer = determine_serializer(options[:serializer])
50
51
  @on_session_load_error = options[:on_session_load_error]
@@ -64,8 +65,10 @@ class RedisSessionStore < ActionDispatch::Session::AbstractStore
64
65
  def session_exists?(env)
65
66
  value = current_session_id(env)
66
67
 
67
- value && !value.empty? &&
68
- redis.exists(prefixed(value)) # new behavior
68
+ !!(
69
+ value && !value.empty? &&
70
+ redis.exists(prefixed(value))
71
+ )
69
72
  rescue Errno::ECONNREFUSED => e
70
73
  on_redis_down.call(e, env, value) if on_redis_down
71
74
 
@@ -74,9 +77,9 @@ class RedisSessionStore < ActionDispatch::Session::AbstractStore
74
77
 
75
78
  def verify_handlers!
76
79
  %w(on_redis_down on_session_load_error).each do |h|
77
- if (handler = public_send(h)) && !handler.respond_to?(:call)
78
- fail ArgumentError, "#{h} handler is not callable"
79
- end
80
+ next unless (handler = public_send(h)) && !handler.respond_to?(:call)
81
+
82
+ fail ArgumentError, "#{h} handler is not callable"
80
83
  end
81
84
  end
82
85
 
@@ -4,7 +4,7 @@ Gem::Specification.new do |gem|
4
4
  gem.name = 'redis-session-store'
5
5
  gem.authors = ['Mathias Meyer']
6
6
  gem.email = ['meyer@paperplanes.de']
7
- gem.summary = 'A drop-in replacement for e.g. MemCacheStore to ' <<
7
+ gem.summary = 'A drop-in replacement for e.g. MemCacheStore to ' \
8
8
  'store Rails sessions (and Rails sessions only) in Redis.'
9
9
  gem.description = gem.summary
10
10
  gem.homepage = 'https://github.com/roidrage/redis-session-store'
@@ -19,6 +19,7 @@ Gem::Specification.new do |gem|
19
19
  .match(/^ VERSION = '(.*)'/)[1]
20
20
 
21
21
  gem.add_runtime_dependency 'redis'
22
+ gem.add_runtime_dependency 'actionpack', '>= 3', '< 5'
22
23
 
23
24
  gem.add_development_dependency 'fakeredis'
24
25
  gem.add_development_dependency 'rake'
@@ -17,7 +17,7 @@ describe RedisSessionStore do
17
17
  end
18
18
 
19
19
  it 'assigns a :namespace to @default_options' do
20
- default_options[:namespace].should == 'rack:session'
20
+ expect(default_options[:namespace]).to eq('rack:session')
21
21
  end
22
22
 
23
23
  describe 'when initializing with the redis sub-hash options' do
@@ -36,27 +36,27 @@ describe RedisSessionStore do
36
36
  end
37
37
 
38
38
  it 'creates a redis instance' do
39
- store.instance_variable_get(:@redis).should_not be_nil
39
+ expect(store.instance_variable_get(:@redis)).to_not be_nil
40
40
  end
41
41
 
42
42
  it 'assigns the :host option to @default_options' do
43
- default_options[:host].should == 'hosty.local'
43
+ expect(default_options[:host]).to eq('hosty.local')
44
44
  end
45
45
 
46
46
  it 'assigns the :port option to @default_options' do
47
- default_options[:port].should == 16_379
47
+ expect(default_options[:port]).to eq(16_379)
48
48
  end
49
49
 
50
50
  it 'assigns the :db option to @default_options' do
51
- default_options[:db].should == 2
51
+ expect(default_options[:db]).to eq(2)
52
52
  end
53
53
 
54
54
  it 'assigns the :key_prefix option to @default_options' do
55
- default_options[:key_prefix].should == 'myapp:session:'
55
+ expect(default_options[:key_prefix]).to eq('myapp:session:')
56
56
  end
57
57
 
58
58
  it 'assigns the :expire_after option to @default_options' do
59
- default_options[:expire_after].should == 60 * 120
59
+ expect(default_options[:expire_after]).to eq(60 * 120)
60
60
  end
61
61
  end
62
62
 
@@ -74,27 +74,59 @@ describe RedisSessionStore do
74
74
  end
75
75
 
76
76
  it 'creates a redis instance' do
77
- store.instance_variable_get(:@redis).should_not be_nil
77
+ expect(store.instance_variable_get(:@redis)).to_not be_nil
78
78
  end
79
79
 
80
80
  it 'assigns the :host option to @default_options' do
81
- default_options[:host].should == 'hostersons.local'
81
+ expect(default_options[:host]).to eq('hostersons.local')
82
82
  end
83
83
 
84
84
  it 'assigns the :port option to @default_options' do
85
- default_options[:port].should == 26_379
85
+ expect(default_options[:port]).to eq(26_379)
86
86
  end
87
87
 
88
88
  it 'assigns the :db option to @default_options' do
89
- default_options[:db].should == 4
89
+ expect(default_options[:db]).to eq(4)
90
90
  end
91
91
 
92
92
  it 'assigns the :key_prefix option to @default_options' do
93
- default_options[:key_prefix].should == 'appydoo:session:'
93
+ expect(default_options[:key_prefix]).to eq('appydoo:session:')
94
94
  end
95
95
 
96
96
  it 'assigns the :expire_after option to @default_options' do
97
- default_options[:expire_after].should == 60 * 60
97
+ expect(default_options[:expire_after]).to eq(60 * 60)
98
+ end
99
+ end
100
+
101
+ describe 'when initializing with existing redis object' do
102
+ let :options do
103
+ {
104
+ key: random_string,
105
+ secret: random_string,
106
+ redis: {
107
+ client: redis_client,
108
+ key_prefix: 'myapp:session:',
109
+ expire_after: 60 * 30
110
+ }
111
+ }
112
+ end
113
+
114
+ let(:redis_client) { double('redis_client') }
115
+
116
+ it 'assigns given redis object to @redis' do
117
+ expect(store.instance_variable_get(:@redis)).to be(redis_client)
118
+ end
119
+
120
+ it 'assigns the :client option to @default_options' do
121
+ expect(default_options[:client]).to be(redis_client)
122
+ end
123
+
124
+ it 'assigns the :key_prefix option to @default_options' do
125
+ expect(default_options[:key_prefix]).to eq('myapp:session:')
126
+ end
127
+
128
+ it 'assigns the :expire_after option to @default_options' do
129
+ expect(default_options[:expire_after]).to eq(60 * 30)
98
130
  end
99
131
  end
100
132
 
@@ -110,19 +142,19 @@ describe RedisSessionStore do
110
142
 
111
143
  context 'when successfully persisting the session' do
112
144
  it 'returns the session id' do
113
- store.send(:set_session, env, session_id, session_data, options)
114
- .should eq(session_id)
145
+ expect(store.send(:set_session, env, session_id, session_data, options))
146
+ .to eq(session_id)
115
147
  end
116
148
  end
117
149
 
118
150
  context 'when unsuccessfully persisting the session' do
119
151
  before do
120
- store.stub(:redis).and_raise(Errno::ECONNREFUSED)
152
+ allow(store).to receive(:redis).and_raise(Errno::ECONNREFUSED)
121
153
  end
122
154
 
123
155
  it 'returns false' do
124
- store.send(:set_session, env, session_id, session_data, options)
125
- .should eq(false)
156
+ expect(store.send(:set_session, env, session_id, session_data, options))
157
+ .to eq(false)
126
158
  end
127
159
  end
128
160
 
@@ -130,25 +162,25 @@ describe RedisSessionStore do
130
162
  let(:options) { {} }
131
163
 
132
164
  it 'sets the session value without expiry' do
133
- store.send(:set_session, env, session_id, session_data, options)
134
- .should eq(session_id)
165
+ expect(store.send(:set_session, env, session_id, session_data, options))
166
+ .to eq(session_id)
135
167
  end
136
168
  end
137
169
 
138
170
  context 'when redis is down' do
139
171
  before do
140
- store.stub(:redis).and_raise(Errno::ECONNREFUSED)
141
- store.on_redis_down = ->(*a) { @redis_down_handled = true }
172
+ allow(store).to receive(:redis).and_raise(Errno::ECONNREFUSED)
173
+ store.on_redis_down = ->(*_a) { @redis_down_handled = true }
142
174
  end
143
175
 
144
176
  it 'returns false' do
145
- store.send(:set_session, env, session_id, session_data, options)
146
- .should eq(false)
177
+ expect(store.send(:set_session, env, session_id, session_data, options))
178
+ .to eq(false)
147
179
  end
148
180
 
149
181
  it 'calls the on_redis_down handler' do
150
182
  store.send(:set_session, env, session_id, session_data, options)
151
- expect(@redis_down_handled).to be_true
183
+ expect(@redis_down_handled).to eq(true)
152
184
  end
153
185
 
154
186
  context 'when :on_redis_down re-raises' do
@@ -167,47 +199,52 @@ describe RedisSessionStore do
167
199
  let(:session_id) { 'foo' }
168
200
 
169
201
  before do
170
- store.stub(:current_session_id).with(:env).and_return(session_id)
202
+ allow(store).to receive(:current_session_id)
203
+ .with(:env).and_return(session_id)
171
204
  end
172
205
 
173
206
  context 'when session id is not provided' do
174
207
  context 'when session id is nil' do
175
208
  let(:session_id) { nil }
176
- it 'should return false' do
177
- store.send(:session_exists?, :env).should be_false
209
+ it 'returns false' do
210
+ expect(store.send(:session_exists?, :env)).to eq(false)
178
211
  end
179
212
  end
180
213
 
181
214
  context 'when session id is empty string' do
182
215
  let(:session_id) { '' }
183
- it 'should return false' do
184
- store.stub(:current_session_id).with(:env).and_return('')
185
- store.send(:session_exists?, :env).should be_false
216
+ it 'returns false' do
217
+ allow(store).to receive(:current_session_id).with(:env).and_return('')
218
+ expect(store.send(:session_exists?, :env)).to eq(false)
186
219
  end
187
220
  end
188
221
  end
189
222
 
190
223
  context 'when session id is provided' do
191
- let(:redis) { double('redis').tap { |o| store.stub(redis: o) } }
224
+ let(:redis) do
225
+ double('redis').tap do |o|
226
+ allow(store).to receive(:redis).and_return(o)
227
+ end
228
+ end
192
229
 
193
230
  context 'when session id does not exist in redis' do
194
- it 'should return false' do
195
- redis.should_receive(:exists).with('foo').and_return(false)
196
- store.send(:session_exists?, :env).should be_false
231
+ it 'returns false' do
232
+ expect(redis).to receive(:exists).with('foo').and_return(false)
233
+ expect(store.send(:session_exists?, :env)).to eq(false)
197
234
  end
198
235
  end
199
236
 
200
237
  context 'when session id exists in redis' do
201
- it 'should return true' do
202
- redis.should_receive(:exists).with('foo').and_return(true)
203
- store.send(:session_exists?, :env).should be_true
238
+ it 'returns true' do
239
+ expect(redis).to receive(:exists).with('foo').and_return(true)
240
+ expect(store.send(:session_exists?, :env)).to eq(true)
204
241
  end
205
242
  end
206
243
 
207
244
  context 'when redis is down' do
208
- it 'should return true (fallback to old behavior)' do
209
- store.stub(:redis).and_raise(Errno::ECONNREFUSED)
210
- store.send(:session_exists?, :env).should be_true
245
+ it 'returns true (fallback to old behavior)' do
246
+ allow(store).to receive(:redis).and_raise(Errno::ECONNREFUSED)
247
+ expect(store.send(:session_exists?, :env)).to eq(true)
211
248
  end
212
249
  end
213
250
  end
@@ -222,10 +259,10 @@ describe RedisSessionStore do
222
259
 
223
260
  let(:fake_key) { 'thisisarediskey' }
224
261
 
225
- it 'should retrieve the prefixed key from redis' do
262
+ it 'retrieves the prefixed key from redis' do
226
263
  redis = double('redis')
227
- store.stub(redis: redis)
228
- store.stub(generate_sid: fake_key)
264
+ allow(store).to receive(:redis).and_return(redis)
265
+ allow(store).to receive(:generate_sid).and_return(fake_key)
229
266
  expect(redis).to receive(:get).with("#{options[:key_prefix]}#{fake_key}")
230
267
 
231
268
  store.send(:get_session, double('env'), fake_key)
@@ -233,8 +270,8 @@ describe RedisSessionStore do
233
270
 
234
271
  context 'when redis is down' do
235
272
  before do
236
- store.stub(:redis).and_raise(Errno::ECONNREFUSED)
237
- store.stub(generate_sid: 'foop')
273
+ allow(store).to receive(:redis).and_raise(Errno::ECONNREFUSED)
274
+ allow(store).to receive(:generate_sid).and_return('foop')
238
275
  end
239
276
 
240
277
  it 'returns an empty session hash' do
@@ -266,12 +303,12 @@ describe RedisSessionStore do
266
303
  let(:fake_key) { 'thisisarediskey' }
267
304
 
268
305
  before do
269
- cookie_hash.stub(:[] => fake_key)
306
+ allow(cookie_hash).to receive(:[]).and_return(fake_key)
270
307
  end
271
308
 
272
309
  it 'deletes the prefixed key from redis' do
273
310
  redis = double('redis')
274
- store.stub(redis: redis)
311
+ allow(store).to receive(:redis).and_return(redis)
275
312
  expect(redis).to receive(:del)
276
313
  .with("#{options[:key_prefix]}#{fake_key}")
277
314
 
@@ -279,10 +316,12 @@ describe RedisSessionStore do
279
316
  end
280
317
 
281
318
  context 'when redis is down' do
282
- before { store.stub(:redis).and_raise(Errno::ECONNREFUSED) }
319
+ before do
320
+ allow(store).to receive(:redis).and_raise(Errno::ECONNREFUSED)
321
+ end
283
322
 
284
- it 'should return false' do
285
- expect(store.send(:destroy, env)).to be_false
323
+ it 'returns false' do
324
+ expect(store.send(:destroy, env)).to eq(false)
286
325
  end
287
326
 
288
327
  context 'when :on_redis_down re-raises' do
@@ -300,7 +339,7 @@ describe RedisSessionStore do
300
339
  context 'when destroyed via #destroy_session' do
301
340
  it 'deletes the prefixed key from redis' do
302
341
  redis = double('redis', setnx: true)
303
- store.stub(redis: redis)
342
+ allow(store).to receive(:redis).and_return(redis)
304
343
  sid = store.send(:generate_sid)
305
344
  expect(redis).to receive(:del).with("#{options[:key_prefix]}#{sid}")
306
345
 
@@ -319,12 +358,12 @@ describe RedisSessionStore do
319
358
  let(:expected_encoding) { encoded_data }
320
359
 
321
360
  before do
322
- store.stub(:redis).and_return(redis)
361
+ allow(store).to receive(:redis).and_return(redis)
323
362
  end
324
363
 
325
364
  shared_examples_for 'serializer' do
326
365
  it 'encodes correctly' do
327
- redis.should_receive(:set).with('12345', expected_encoding)
366
+ expect(redis).to receive(:set).with('12345', expected_encoding)
328
367
  store.send(:set_session, env, session_id, session_data, options)
329
368
  end
330
369
 
@@ -364,11 +403,11 @@ describe RedisSessionStore do
364
403
  context 'custom' do
365
404
  let :custom_serializer do
366
405
  Class.new do
367
- def self.load(value)
406
+ def self.load(_value)
368
407
  { 'some' => 'data' }
369
408
  end
370
409
 
371
- def self.dump(value)
410
+ def self.dump(_value)
372
411
  'somedata'
373
412
  end
374
413
  end
@@ -384,10 +423,10 @@ describe RedisSessionStore do
384
423
  describe 'handling decode errors' do
385
424
  context 'when a class is serialized that does not exist' do
386
425
  before do
387
- store.stub(
388
- redis: double('redis', get: "\x04\bo:\nNonExistentClass\x00",
389
- del: true)
390
- )
426
+ allow(store).to receive(:redis)
427
+ .and_return(double('redis',
428
+ get: "\x04\bo:\nNonExistentClass\x00",
429
+ del: true))
391
430
  end
392
431
 
393
432
  it 'returns an empty session' do
@@ -395,7 +434,8 @@ describe RedisSessionStore do
395
434
  end
396
435
 
397
436
  it 'destroys and drops the session' do
398
- store.should_receive(:destroy_session_from_sid).with('wut', drop: true)
437
+ expect(store).to receive(:destroy_session_from_sid)
438
+ .with('wut', drop: true)
399
439
  store.send(:load_session_from_redis, 'wut')
400
440
  end
401
441
 
@@ -410,16 +450,15 @@ describe RedisSessionStore do
410
450
  it 'passes the error and the sid to the handler' do
411
451
  store.send(:load_session_from_redis, 'foo')
412
452
  expect(@e).to be_kind_of(StandardError)
413
- expect(@sid).to eql('foo')
453
+ expect(@sid).to eq('foo')
414
454
  end
415
455
  end
416
456
  end
417
457
 
418
458
  context 'when the encoded data is invalid' do
419
459
  before do
420
- store.stub(
421
- redis: double('redis', get: "\x00\x00\x00\x00", del: true)
422
- )
460
+ allow(store).to receive(:redis)
461
+ .and_return(double('redis', get: "\x00\x00\x00\x00", del: true))
423
462
  end
424
463
 
425
464
  it 'returns an empty session' do
@@ -427,7 +466,8 @@ describe RedisSessionStore do
427
466
  end
428
467
 
429
468
  it 'destroys and drops the session' do
430
- store.should_receive(:destroy_session_from_sid).with('wut', drop: true)
469
+ expect(store).to receive(:destroy_session_from_sid)
470
+ .with('wut', drop: true)
431
471
  store.send(:load_session_from_redis, 'wut')
432
472
  end
433
473
 
@@ -442,7 +482,7 @@ describe RedisSessionStore do
442
482
  it 'passes the error and the sid to the handler' do
443
483
  store.send(:load_session_from_redis, 'foo')
444
484
  expect(@e).to be_kind_of(StandardError)
445
- expect(@sid).to eql('foo')
485
+ expect(@sid).to eq('foo')
446
486
  end
447
487
  end
448
488
  end
@@ -478,7 +518,7 @@ describe RedisSessionStore do
478
518
  it 'allows changing the session' do
479
519
  env = { 'rack.session.options' => {} }
480
520
  sid = 1234
481
- store.stub(:redis).and_return(Redis.new)
521
+ allow(store).to receive(:redis).and_return(Redis.new)
482
522
  data1 = { 'foo' => 'bar' }
483
523
  store.send(:set_session, env, sid, data1)
484
524
  data2 = { 'baz' => 'wat' }
@@ -490,7 +530,7 @@ describe RedisSessionStore do
490
530
  it 'allows changing the session when the session has an expiry' do
491
531
  env = { 'rack.session.options' => { expire_after: 60 } }
492
532
  sid = 1234
493
- store.stub(:redis).and_return(Redis.new)
533
+ allow(store).to receive(:redis).and_return(Redis.new)
494
534
  data1 = { 'foo' => 'bar' }
495
535
  store.send(:set_session, env, sid, data1)
496
536
  data2 = { 'baz' => 'wat' }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-session-store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathias Meyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-22 00:00:00.000000000 Z
11
+ date: 2014-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -24,6 +24,26 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: actionpack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '5'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '3'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '5'
27
47
  - !ruby/object:Gem::Dependency
28
48
  name: fakeredis
29
49
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +128,7 @@ files:
108
128
  - ".gitignore"
109
129
  - ".rspec"
110
130
  - ".rubocop.yml"
131
+ - ".rubocop_todo.yml"
111
132
  - ".simplecov"
112
133
  - ".travis.yml"
113
134
  - AUTHORS.md
@@ -148,4 +169,3 @@ specification_version: 4
148
169
  summary: A drop-in replacement for e.g. MemCacheStore to store Rails sessions (and
149
170
  Rails sessions only) in Redis.
150
171
  test_files: []
151
- has_rdoc: true