redis-actionpack 5.1.0 → 5.2.0.pre
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 +4 -4
- data/.github/auto-assign-issues.yml +2 -0
- data/.gitignore +2 -1
- data/.travis.yml +16 -13
- data/Appraisals +23 -0
- data/README.md +31 -4
- data/bin/bundler-version-options.rb +1 -0
- data/gemfiles/rails_5.0.x.gemfile +9 -0
- data/gemfiles/rails_5.1.x.gemfile +9 -0
- data/gemfiles/rails_5.2.x.gemfile +9 -0
- data/gemfiles/rails_6.0.x.gemfile +9 -0
- data/lib/action_dispatch/middleware/session/redis_store.rb +23 -7
- data/lib/redis/actionpack/version.rb +1 -1
- data/redis-actionpack.gemspec +5 -4
- data/test/gemfiles/{Gemfile.rails-5.0.x → Gemfile.rails-6.0.x} +1 -2
- data/test/integration/redis_store_integration_test.rb +23 -0
- metadata +40 -19
- data/test/gemfiles/Gemfile.rails-4.0.x +0 -10
- data/test/gemfiles/Gemfile.rails-4.1.x +0 -10
- data/test/gemfiles/Gemfile.rails-4.2.x +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e2b6211a9e93d7d4437bd0a16154812f0490980
|
4
|
+
data.tar.gz: d6393f01d6f54f7cec47f5aaf8b96b8024cd15d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49599e9033bb2cec8f544ad965203ff74cf53110fc9977ed95ad1e4c8fe7fd4bc84bc86525e65bec6a867b3402570bf37d36f145abad2293d2da13581c24fd8b
|
7
|
+
data.tar.gz: 5a855c54e08114d9145f432991c4b642a429d9f3819904bb535c525d0adcc3280c425ec92d4d31bb43d5cb0efc2ef82ad215866b3e869b17d0354194178166fa
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -2,23 +2,26 @@ language: ruby
|
|
2
2
|
before_install: gem install bundler
|
3
3
|
script: bundle exec rake
|
4
4
|
rvm:
|
5
|
-
- 2.3
|
6
|
-
- 2.4
|
7
|
-
- 2.5
|
8
|
-
- 2.6
|
9
|
-
- ruby-head
|
5
|
+
- 2.3
|
6
|
+
- 2.4
|
7
|
+
- 2.5
|
8
|
+
- 2.6
|
9
|
+
- ruby-head
|
10
|
+
- jruby-head
|
10
11
|
gemfile:
|
11
|
-
-
|
12
|
-
-
|
13
|
-
-
|
14
|
-
-
|
12
|
+
- gemfiles/rails_5.0.x.gemfile
|
13
|
+
- gemfiles/rails_5.1.x.gemfile
|
14
|
+
- gemfiles/rails_5.2.x.gemfile
|
15
|
+
- gemfiles/rails_6.0.x.gemfile
|
15
16
|
matrix:
|
16
17
|
exclude:
|
17
|
-
|
18
|
-
|
18
|
+
- rvm: 2.3
|
19
|
+
gemfile: gemfiles/rails_6.0.x.gemfile
|
20
|
+
- rvm: 2.4
|
21
|
+
gemfile: gemfiles/rails_6.0.x.gemfile
|
19
22
|
allow_failures:
|
20
|
-
|
21
|
-
|
23
|
+
- rvm: ruby-head
|
24
|
+
- rvm: jruby-head
|
22
25
|
deploy:
|
23
26
|
provider: rubygems
|
24
27
|
api_key:
|
data/Appraisals
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
appraise 'rails-5.0.x' do
|
2
|
+
gem 'redis-store'
|
3
|
+
gem 'redis-rack'
|
4
|
+
gem 'actionpack', '~> 5.0.0'
|
5
|
+
end
|
6
|
+
|
7
|
+
appraise 'rails-5.1.x' do
|
8
|
+
gem 'redis-store'
|
9
|
+
gem 'redis-rack'
|
10
|
+
gem 'actionpack', '~> 5.1.0'
|
11
|
+
end
|
12
|
+
|
13
|
+
appraise 'rails-5.2.x' do
|
14
|
+
gem 'redis-store'
|
15
|
+
gem 'redis-rack'
|
16
|
+
gem 'actionpack', '~> 5.1.0'
|
17
|
+
end
|
18
|
+
|
19
|
+
appraise 'rails-6.0.x' do
|
20
|
+
gem 'redis-store'
|
21
|
+
gem 'redis-rack'
|
22
|
+
gem 'actionpack', '~> 6.0.0'
|
23
|
+
end
|
data/README.md
CHANGED
@@ -17,12 +17,39 @@ gem 'redis-actionpack'
|
|
17
17
|
|
18
18
|
## Usage
|
19
19
|
|
20
|
-
If you are using redis-store with Rails,
|
20
|
+
If you are using redis-store with Rails, head on over to the
|
21
|
+
[redis-rails README](https://github.com/redis-store/redis-rails#session-storage) to
|
22
|
+
learn how to integrate this gem into your Rails application.
|
23
|
+
|
24
|
+
For standalone usage:
|
21
25
|
|
22
26
|
```ruby
|
23
|
-
ActionController::Base.
|
27
|
+
ActionController::Base.session_store = :redis_store,
|
28
|
+
servers: %w(redis://localhost:6379/0/session),
|
29
|
+
expire_after: 90.minutes,
|
30
|
+
key: '_my_application_session',
|
31
|
+
threadsafe: false,
|
32
|
+
signed: true,
|
33
|
+
secure: true
|
24
34
|
```
|
25
35
|
|
36
|
+
A brief run-down of these options...
|
37
|
+
|
38
|
+
- **servers** is an Array of Redis server URLs that we will attempt to find
|
39
|
+
data from.
|
40
|
+
- **expire_after** is the default TTL of session keys. This is also set
|
41
|
+
as the expiry time of any cookies generated by the session store.
|
42
|
+
- **key** is the name of the cookie on the client side
|
43
|
+
- **threadsafe** is for applications that run on multiple instances. Set
|
44
|
+
this to `false` if you want to disable the global mutex lock on
|
45
|
+
session data. It's `true` by default, meaning the mutex will be
|
46
|
+
enabled.
|
47
|
+
- **signed** uses signed/encrypted cookies to store the local session on
|
48
|
+
a client machine, preventing a malicious user from tampering with its
|
49
|
+
contents.
|
50
|
+
- **secure** ensures HTTP cookies are transferred from server to client
|
51
|
+
on a secure (HTTPS) connection
|
52
|
+
|
26
53
|
## Running tests
|
27
54
|
|
28
55
|
```shell
|
@@ -37,8 +64,8 @@ If you are on **Snow Leopard** you have to run `env ARCHFLAGS="-arch x86_64" bun
|
|
37
64
|
|
38
65
|
## Status
|
39
66
|
|
40
|
-
[](http://badge.fury.io/rb/redis-actionpack)
|
41
|
-
[](http://travis-ci.org/redis-store/redis-actionpack?branch=master)
|
67
|
+
[](http://badge.fury.io/rb/redis-actionpack)
|
68
|
+
[](http://travis-ci.org/redis-store/redis-actionpack?branch=master)
|
42
69
|
[](https://codeclimate.com/github/redis-store/redis-actionpack)
|
43
70
|
|
44
71
|
## Copyright
|
@@ -0,0 +1 @@
|
|
1
|
+
puts '-v 1.13.1' if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('2.3.0')
|
@@ -1,9 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'redis-store'
|
2
4
|
require 'redis-rack'
|
3
5
|
require 'action_dispatch/middleware/session/abstract_store'
|
4
6
|
|
5
7
|
module ActionDispatch
|
6
8
|
module Session
|
9
|
+
# Session storage in Redis, using +Redis::Rack+ as a basis.
|
7
10
|
class RedisStore < Rack::Session::Redis
|
8
11
|
include Compatibility
|
9
12
|
include StaleSessionCheck
|
@@ -17,18 +20,31 @@ module ActionDispatch
|
|
17
20
|
|
18
21
|
private
|
19
22
|
|
20
|
-
def set_cookie(env,
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
request
|
23
|
+
def set_cookie(env, _session_id, cookie)
|
24
|
+
request = wrap_in_request(env)
|
25
|
+
cookie_jar(request)[key] = cookie.merge(cookie_options)
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_cookie(request)
|
29
|
+
cookie_jar(request)[key]
|
30
|
+
end
|
31
|
+
|
32
|
+
def wrap_in_request(env)
|
33
|
+
return env if env.is_a?(ActionDispatch::Request)
|
34
|
+
ActionDispatch::Request.new(env)
|
27
35
|
end
|
28
36
|
|
29
37
|
def cookie_options
|
30
38
|
@default_options.slice(:httponly, :secure)
|
31
39
|
end
|
40
|
+
|
41
|
+
def cookie_jar(request)
|
42
|
+
if @default_options[:signed]
|
43
|
+
request.cookie_jar.signed_or_encrypted
|
44
|
+
else
|
45
|
+
request.cookie_jar
|
46
|
+
end
|
47
|
+
end
|
32
48
|
end
|
33
49
|
end
|
34
50
|
end
|
data/redis-actionpack.gemspec
CHANGED
@@ -14,18 +14,19 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.files = `git ls-files`.split("\n")
|
16
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
-
s.executables =
|
17
|
+
s.executables = []
|
18
18
|
s.require_paths = ['lib']
|
19
|
+
s.required_ruby_version = '>= 2.3.0'
|
19
20
|
|
20
21
|
s.add_runtime_dependency 'redis-store', '>= 1.1.0', '< 2'
|
21
22
|
s.add_runtime_dependency 'redis-rack', '>= 1', '< 3'
|
22
|
-
s.add_runtime_dependency 'actionpack', '>=
|
23
|
+
s.add_runtime_dependency 'actionpack', '>= 5', '< 7'
|
23
24
|
|
24
25
|
s.add_development_dependency 'rake', '~> 10'
|
25
|
-
s.add_development_dependency 'bundler'
|
26
|
+
s.add_development_dependency 'bundler', '> 1', '< 3'
|
26
27
|
s.add_development_dependency 'mocha', '~> 0.14.0'
|
27
28
|
s.add_development_dependency 'minitest-rails'
|
28
29
|
s.add_development_dependency 'tzinfo'
|
29
|
-
# s.add_development_dependency 'mini_backtrace'
|
30
30
|
s.add_development_dependency 'redis-store-testing'
|
31
|
+
s.add_development_dependency 'appraisal'
|
31
32
|
end
|
@@ -69,6 +69,20 @@ class RedisStoreIntegrationTest < ::ActionDispatch::IntegrationTest
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
test "should set a signed cookie when the 'signed' option is set" do
|
73
|
+
with_test_route_set(signed: true) do
|
74
|
+
https!
|
75
|
+
|
76
|
+
get '/set_session_value'
|
77
|
+
assert_response :success
|
78
|
+
|
79
|
+
cookie = cookies.instance_variable_get('@cookies').first
|
80
|
+
|
81
|
+
assert_includes cookie.raw, '_session_id='
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
|
72
86
|
test "should set a http-only cookie by default" do
|
73
87
|
with_test_route_set do
|
74
88
|
get '/set_session_value'
|
@@ -238,8 +252,17 @@ class RedisStoreIntegrationTest < ::ActionDispatch::IntegrationTest
|
|
238
252
|
def initialize(routes, &blk)
|
239
253
|
@routes = routes
|
240
254
|
@stack = ActionDispatch::MiddlewareStack.new(&blk).build(@routes)
|
255
|
+
@secret = SecureRandom.hex
|
256
|
+
@key_generator = ActiveSupport::CachingKeyGenerator.new(
|
257
|
+
ActiveSupport::KeyGenerator.new(@secret, iterations: 2)
|
258
|
+
)
|
241
259
|
end
|
242
260
|
def call(env)
|
261
|
+
env[ActionDispatch::Cookies::GENERATOR_KEY] = @key_generator
|
262
|
+
env[ActionDispatch::Cookies::SIGNED_COOKIE_SALT] = SecureRandom.hex
|
263
|
+
if defined? ActionDispatch::Cookies::COOKIES_ROTATIONS
|
264
|
+
env[ActionDispatch::Cookies::COOKIES_ROTATIONS] = ActiveSupport::Messages::RotationConfiguration.new
|
265
|
+
end
|
243
266
|
@stack.call(env)
|
244
267
|
end
|
245
268
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-actionpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.2.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis-store
|
@@ -56,7 +56,7 @@ dependencies:
|
|
56
56
|
requirements:
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '
|
59
|
+
version: '5'
|
60
60
|
- - "<"
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '7'
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '5'
|
70
70
|
- - "<"
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '7'
|
@@ -88,16 +88,22 @@ dependencies:
|
|
88
88
|
name: bundler
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
90
90
|
requirements:
|
91
|
-
- - "
|
91
|
+
- - ">"
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: '
|
93
|
+
version: '1'
|
94
|
+
- - "<"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3'
|
94
97
|
type: :development
|
95
98
|
prerelease: false
|
96
99
|
version_requirements: !ruby/object:Gem::Requirement
|
97
100
|
requirements:
|
98
|
-
- - "
|
101
|
+
- - ">"
|
99
102
|
- !ruby/object:Gem::Version
|
100
|
-
version: '
|
103
|
+
version: '1'
|
104
|
+
- - "<"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '3'
|
101
107
|
- !ruby/object:Gem::Dependency
|
102
108
|
name: mocha
|
103
109
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,6 +160,20 @@ dependencies:
|
|
154
160
|
- - ">="
|
155
161
|
- !ruby/object:Gem::Version
|
156
162
|
version: '0'
|
163
|
+
- !ruby/object:Gem::Dependency
|
164
|
+
name: appraisal
|
165
|
+
requirement: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
type: :development
|
171
|
+
prerelease: false
|
172
|
+
version_requirements: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
157
177
|
description: Redis session store for ActionPack
|
158
178
|
email:
|
159
179
|
- me@lucaguidi.com
|
@@ -161,13 +181,20 @@ executables: []
|
|
161
181
|
extensions: []
|
162
182
|
extra_rdoc_files: []
|
163
183
|
files:
|
184
|
+
- ".github/auto-assign-issues.yml"
|
164
185
|
- ".gitignore"
|
165
186
|
- ".travis.yml"
|
187
|
+
- Appraisals
|
166
188
|
- CODEOWNERS
|
167
189
|
- Gemfile
|
168
190
|
- MIT-LICENSE
|
169
191
|
- README.md
|
170
192
|
- Rakefile
|
193
|
+
- bin/bundler-version-options.rb
|
194
|
+
- gemfiles/rails_5.0.x.gemfile
|
195
|
+
- gemfiles/rails_5.1.x.gemfile
|
196
|
+
- gemfiles/rails_5.2.x.gemfile
|
197
|
+
- gemfiles/rails_6.0.x.gemfile
|
171
198
|
- lib/action_dispatch/middleware/session/redis_store.rb
|
172
199
|
- lib/redis-actionpack.rb
|
173
200
|
- lib/redis/actionpack/version.rb
|
@@ -184,10 +211,7 @@ files:
|
|
184
211
|
- test/dummy/config/routes.rb
|
185
212
|
- test/dummy/script/rails
|
186
213
|
- test/fixtures/session_autoload_test/session_autoload_test/foo.rb
|
187
|
-
- test/gemfiles/Gemfile.rails-
|
188
|
-
- test/gemfiles/Gemfile.rails-4.1.x
|
189
|
-
- test/gemfiles/Gemfile.rails-4.2.x
|
190
|
-
- test/gemfiles/Gemfile.rails-5.0.x
|
214
|
+
- test/gemfiles/Gemfile.rails-6.0.x
|
191
215
|
- test/integration/redis_store_integration_test.rb
|
192
216
|
- test/test_helper.rb
|
193
217
|
homepage: http://redis-store.org/redis-actionpack
|
@@ -202,12 +226,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
226
|
requirements:
|
203
227
|
- - ">="
|
204
228
|
- !ruby/object:Gem::Version
|
205
|
-
version:
|
229
|
+
version: 2.3.0
|
206
230
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
231
|
requirements:
|
208
|
-
- - "
|
232
|
+
- - ">"
|
209
233
|
- !ruby/object:Gem::Version
|
210
|
-
version:
|
234
|
+
version: 1.3.1
|
211
235
|
requirements: []
|
212
236
|
rubyforge_project:
|
213
237
|
rubygems_version: 2.6.14
|
@@ -227,9 +251,6 @@ test_files:
|
|
227
251
|
- test/dummy/config/routes.rb
|
228
252
|
- test/dummy/script/rails
|
229
253
|
- test/fixtures/session_autoload_test/session_autoload_test/foo.rb
|
230
|
-
- test/gemfiles/Gemfile.rails-
|
231
|
-
- test/gemfiles/Gemfile.rails-4.1.x
|
232
|
-
- test/gemfiles/Gemfile.rails-4.2.x
|
233
|
-
- test/gemfiles/Gemfile.rails-5.0.x
|
254
|
+
- test/gemfiles/Gemfile.rails-6.0.x
|
234
255
|
- test/integration/redis_store_integration_test.rb
|
235
256
|
- test/test_helper.rb
|