redis-session-store 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 197d2120a9c333b43c5c563a89ed0fcc96a6444918d0aa49207e3d74cc1c0fe3
4
- data.tar.gz: 6946c195bdb70317a7e2e06c84643401a4e8b520dde2191c48c97e7399a39e7e
3
+ metadata.gz: ea830a6f15b8fd1ccb1310ab77e2abc54f3b6e70dcef137d81da0929e2e74319
4
+ data.tar.gz: '013008f119003c119e66226c929da60cd824aab20560cbca017233e1f4e2847e'
5
5
  SHA512:
6
- metadata.gz: c830641d881e1ebcc7d472f98ca55e9ded617a869e7a5de87a7bd96c09cf23d5ef9244d8978aa7fe8747ba9179bc5e575a9914d2aafb2248b988d79b4e18a9c2
7
- data.tar.gz: 086ff62e30cdb9b08b9845f5f9581ad20a05e38aadb868b1dc4ee08d07402ac6571936142c9f775e8c4ed38bdaa6825b9cda5ee7155444fe903e5af907fe70b8
6
+ metadata.gz: 69360bd3de339d129ed3fd2863c1880e7030cac9a3edf6ebf6834c8b0c330d0f3062bc70fa53237d7b1318f9c5f309a6dc333da0d943d98fc6762ea996db7a32
7
+ data.tar.gz: e9bf6c72b4e9175d248bb9306ae6728107ec9675642c3309cb14dcd436e7faaa634ce711da37507932abe115655e4acd1b5d1d78cdeeea5e42cdcea1462f68f9
@@ -1,5 +1,3 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
1
  AllCops:
4
2
  DisplayCopNames: true
5
3
  Exclude:
@@ -19,6 +17,9 @@ Metrics/BlockLength:
19
17
  Metrics/LineLength:
20
18
  Max: 100
21
19
 
20
+ Metrics/ClassLength:
21
+ Max: 120
22
+
22
23
  Security/MarshalLoad:
23
24
  Enabled: false
24
25
 
@@ -2,11 +2,13 @@ language: ruby
2
2
  sudo: false
3
3
  cache: bundler
4
4
  rvm:
5
- - 2.3.1
6
- - jruby-9.1.15.0
5
+ - 2.3.7
6
+ - 2.4.4
7
+ - 2.5.1
8
+ - jruby-9.2.0.0
7
9
  matrix:
8
10
  allow_failures:
9
- - rvm: jruby-9.1.15.0
11
+ - rvm: jruby-9.2.0.0
10
12
  notifications:
11
13
  email: false
12
14
  deploy:
data/AUTHORS.md CHANGED
@@ -20,3 +20,4 @@ Redis Session Store authors
20
20
  - Nicolas Rodriguez
21
21
  - Sergey Nebolsin
22
22
  - Anton Kolodii
23
+ - Peter Karman
@@ -4,6 +4,14 @@
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.11.0] - 2018-08-13
8
+ ### Changed
9
+ - JRuby to jruby-9.2.0.0
10
+ - Travis Ruby support: 2.3.7, 2.4.4, 2.5.1
11
+
12
+ ### Added
13
+ - :ttl configuration option
14
+
7
15
  ## [0.10.0] - 2018-04-14
8
16
  ### Changed
9
17
  - JRuby to jruby-9.1.15.0
@@ -216,7 +224,10 @@
216
224
  ### Added
217
225
  - first working version
218
226
 
219
- [Unreleased]: https://github.com/roidrage/redis-session-store/compare/v0.9.1...HEAD
227
+ [Unreleased]: https://github.com/roidrage/redis-session-store/compare/v0.11.0...HEAD
228
+ [0.11.0]: https://github.com/roidrage/redis-session-store/compare/v0.10.0...v0.11.0
229
+ [0.10.0]: https://github.com/roidrage/redis-session-store/compare/v0.9.2...v0.10.0
230
+ [0.9.2]: https://github.com/roidrage/redis-session-store/compare/v0.9.1...v0.9.2
220
231
  [0.9.1]: https://github.com/roidrage/redis-session-store/compare/v0.9.0...v0.9.1
221
232
  [0.9.0]: https://github.com/roidrage/redis-session-store/compare/v0.8.1...v0.9.0
222
233
  [0.8.1]: https://github.com/roidrage/redis-session-store/compare/v0.8.0...v0.8.1
data/README.md CHANGED
@@ -33,12 +33,13 @@ See `lib/redis-session-store.rb` for a list of valid options.
33
33
  In your Rails app, throw in an initializer with the following contents:
34
34
 
35
35
  ``` ruby
36
- My::Application.config.session_store :redis_session_store, {
36
+ Rails.application.config.session_store :redis_session_store, {
37
37
  key: 'your_session_key',
38
38
  redis: {
39
- expire_after: 120.minutes,
39
+ expire_after: 120.minutes, # cookie expiration
40
+ ttl: 120.minutes, # Redis expiration, defaults to 'expire_after'
40
41
  key_prefix: 'myapp:session:',
41
- url: 'redis://host:12345/2',
42
+ url: 'redis://localhost:6379/0',
42
43
  }
43
44
  }
44
45
  ```
@@ -49,7 +50,7 @@ If you want to handle cases where Redis is unavailable, a custom
49
50
  callable handler may be provided as `on_redis_down`:
50
51
 
51
52
  ``` ruby
52
- My::Application.config.session_store :redis_session_store, {
53
+ Rails.application.config.session_store :redis_session_store, {
53
54
  # ... other options ...
54
55
  on_redis_down: ->(e, env, sid) { do_something_will_ya!(e) }
55
56
  redis: {
@@ -69,7 +70,7 @@ custom serializer:
69
70
  * `CustomClass` - You can just pass the constant name of any class that responds to `.load` and `.dump`
70
71
 
71
72
  ``` ruby
72
- My::Application.config.session_store :redis_session_store, {
73
+ Rails.application.config.session_store :redis_session_store, {
73
74
  # ... other options ...
74
75
  serializer: :hybrid
75
76
  redis: {
@@ -88,7 +89,7 @@ custom callable handler may be provided as `on_session_load_error` which
88
89
  will be given the error and the session ID.
89
90
 
90
91
  ``` ruby
91
- My::Application.config.session_store :redis_session_store, {
92
+ Rails.application.config.session_store :redis_session_store, {
92
93
  # ... other options ...
93
94
  on_session_load_error: ->(e, sid) { do_something_will_ya!(e) }
94
95
  redis: {
@@ -3,7 +3,7 @@ require 'redis'
3
3
  # Redis session storage for Rails, and for Rails only. Derived from
4
4
  # the MemCacheStore code, simply dropping in Redis instead.
5
5
  class RedisSessionStore < ActionDispatch::Session::AbstractStore
6
- VERSION = '0.10.0'.freeze
6
+ VERSION = '0.11.0'.freeze
7
7
  # Rails 3.1 and beyond defines the constant elsewhere
8
8
  unless defined?(ENV_SESSION_OPTIONS_KEY)
9
9
  ENV_SESSION_OPTIONS_KEY = if Rack.release.split('.').first.to_i > 1
@@ -27,12 +27,12 @@ class RedisSessionStore < ActionDispatch::Session::AbstractStore
27
27
  #
28
28
  # ==== Examples
29
29
  #
30
- # My::Application.config.session_store :redis_session_store, {
30
+ # Rails.application.config.session_store :redis_session_store, {
31
31
  # key: 'your_session_key',
32
32
  # redis: {
33
33
  # expire_after: 120.minutes,
34
34
  # key_prefix: 'myapp:session:',
35
- # url: 'redis://host:12345/2'
35
+ # url: 'redis://localhost:6379/0'
36
36
  # },
37
37
  # on_redis_down: ->(*a) { logger.error("Redis down! #{a.inspect}") }
38
38
  # serializer: :hybrid # migrate from Marshal to JSON
@@ -116,7 +116,7 @@ class RedisSessionStore < ActionDispatch::Session::AbstractStore
116
116
  end
117
117
 
118
118
  def set_session(env, sid, session_data, options = nil)
119
- expiry = (options || env.fetch(ENV_SESSION_OPTIONS_KEY))[:expire_after]
119
+ expiry = get_expiry(env, options)
120
120
  if expiry
121
121
  redis.setex(prefixed(sid), expiry, encode(session_data))
122
122
  else
@@ -129,6 +129,11 @@ class RedisSessionStore < ActionDispatch::Session::AbstractStore
129
129
  end
130
130
  alias write_session set_session
131
131
 
132
+ def get_expiry(env, options)
133
+ session_storage_options = options || env.fetch(ENV_SESSION_OPTIONS_KEY, {})
134
+ session_storage_options[:ttl] || session_storage_options[:expire_after]
135
+ end
136
+
132
137
  def encode(session_data)
133
138
  serializer.dump(session_data)
134
139
  end
@@ -59,6 +59,29 @@ describe RedisSessionStore do
59
59
  end
60
60
  end
61
61
 
62
+ describe 'when configured with both :ttl and :expire_after' do
63
+ let(:ttl_seconds) { 60 * 120 }
64
+ let :options do
65
+ {
66
+ key: random_string,
67
+ secret: random_string,
68
+ redis: {
69
+ host: 'hosty.local',
70
+ port: 16_379,
71
+ db: 2,
72
+ key_prefix: 'myapp:session:',
73
+ ttl: ttl_seconds,
74
+ expire_after: nil
75
+ }
76
+ }
77
+ end
78
+
79
+ it 'assigns the :ttl option to @default_options' do
80
+ expect(default_options[:ttl]).to eq(ttl_seconds)
81
+ expect(default_options[:expire_after]).to be_nil
82
+ end
83
+ end
84
+
62
85
  describe 'when initializing with top-level redis options' do
63
86
  let :options do
64
87
  {
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.10.0
4
+ version: 0.11.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: 2018-04-14 00:00:00.000000000 Z
11
+ date: 2018-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -134,7 +134,6 @@ files:
134
134
  - ".gitignore"
135
135
  - ".rspec"
136
136
  - ".rubocop.yml"
137
- - ".rubocop_todo.yml"
138
137
  - ".simplecov"
139
138
  - ".travis.yml"
140
139
  - AUTHORS.md
@@ -1,12 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2016-07-02 09:22:22 -0400 using RuboCop version 0.41.1.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 1
10
- # Configuration parameters: CountComments.
11
- Metrics/ClassLength:
12
- Max: 110