redis-actionpack 5.4.0 → 5.5.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 +4 -4
- data/.github/dependabot.yml +6 -0
- data/.github/workflows/ci.yml +68 -29
- data/.gitignore +1 -0
- data/Appraisals +46 -5
- data/CHANGELOG.md +9 -0
- data/Gemfile +8 -5
- data/README.md +4 -6
- data/Rakefile +2 -0
- data/gemfiles/{rails_5.0.x.gemfile → rails_5.0.gemfile} +5 -5
- data/gemfiles/{rails_5.1.x.gemfile → rails_5.1.gemfile} +5 -5
- data/gemfiles/{rails_5.2.x.gemfile → rails_5.2.gemfile} +6 -6
- data/gemfiles/{rails_6.0.x.gemfile → rails_6.0.gemfile} +5 -5
- data/gemfiles/rails_6.1.gemfile +16 -0
- data/gemfiles/rails_7.0.gemfile +16 -0
- data/gemfiles/rails_7.1.gemfile +16 -0
- data/gemfiles/rails_7.2.gemfile +16 -0
- data/gemfiles/rails_8.0.gemfile +16 -0
- data/lib/action_dispatch/middleware/session/redis_store.rb +1 -0
- data/lib/redis/actionpack/version.rb +3 -1
- data/lib/redis-actionpack.rb +2 -0
- data/redis-actionpack.gemspec +12 -14
- data/test/integration/{redis_store_integration_test.rb → default/redis_store_integration_test.rb} +13 -3
- data/test/integration/rails7.2/redis_store_integration_test.rb +342 -0
- data/test/test_helper.rb +26 -9
- metadata +26 -43
- data/bin/bundler-version-options.rb +0 -1
- data/test/dummy/script/rails +0 -6
- data/test/gemfiles/Gemfile.rails-6.0.x +0 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 28f0d4976af13727e86f22c78bc411c6f87f98c6073b864376efa1902c9e17c2
|
|
4
|
+
data.tar.gz: bd544e2fe6845154d55aad77d3c1cac832224b3f770e50740e67da8a5e30d20d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ab5b3822d6b8bf9cf3e297b950b6c16fa2f37cf3b944da3036affe468e52591b8d83485ce9ae65f102150c3bd2b61932a6e41332d8c056630fa7b327423a90cb
|
|
7
|
+
data.tar.gz: 4358c1cc800ae2b542e66432045c6afaa0db2d08ef8ff712b9c436f3a7b62f9826e81d39f11f359f7b02df650ebb49fb4b981600521fef2638abd8ec396e995b
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
name: CI
|
|
2
|
+
|
|
2
3
|
on:
|
|
3
4
|
push:
|
|
4
|
-
branches
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
5
7
|
tags-ignore: [v*]
|
|
8
|
+
pull_request:
|
|
9
|
+
branches:
|
|
10
|
+
- master
|
|
11
|
+
|
|
6
12
|
concurrency:
|
|
7
13
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
8
14
|
cancel-in-progress: true
|
|
15
|
+
|
|
9
16
|
jobs:
|
|
10
17
|
test:
|
|
11
|
-
name: "test (ruby: ${{ matrix.ruby }},
|
|
18
|
+
name: "test (ruby: ${{ matrix.ruby }}, rails: ${{ matrix.rails }})"
|
|
12
19
|
runs-on: ubuntu-latest
|
|
13
20
|
continue-on-error: ${{ contains(matrix.ruby, 'head') }}
|
|
14
21
|
strategy:
|
|
@@ -18,45 +25,77 @@ jobs:
|
|
|
18
25
|
- "2.7"
|
|
19
26
|
- "3.0"
|
|
20
27
|
- "3.1"
|
|
28
|
+
- "3.2"
|
|
29
|
+
- "3.3"
|
|
21
30
|
# - 'head'
|
|
22
|
-
- "jruby"
|
|
31
|
+
# - "jruby"
|
|
23
32
|
# - 'jruby-head'
|
|
24
|
-
- "truffleruby"
|
|
33
|
+
# - "truffleruby"
|
|
25
34
|
# - 'truffleruby-head'
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
35
|
+
rails:
|
|
36
|
+
- rails_8.0
|
|
37
|
+
- rails_7.2
|
|
38
|
+
- rails_7.1
|
|
39
|
+
- rails_7.0
|
|
40
|
+
- rails_6.1
|
|
41
|
+
- rails_6.0
|
|
42
|
+
- rails_5.2
|
|
43
|
+
- rails_5.1
|
|
44
|
+
- rails_5.0
|
|
45
|
+
|
|
46
|
+
exclude:
|
|
47
|
+
- ruby: '2.7'
|
|
48
|
+
rails: 'rails_7.2'
|
|
49
|
+
- ruby: '2.7'
|
|
50
|
+
rails: 'rails_8.0'
|
|
51
|
+
|
|
52
|
+
- ruby: '3.0'
|
|
53
|
+
rails: 'rails_5.0'
|
|
54
|
+
- ruby: '3.0'
|
|
55
|
+
rails: 'rails_5.1'
|
|
56
|
+
- ruby: '3.0'
|
|
57
|
+
rails: 'rails_5.2'
|
|
58
|
+
- ruby: '3.0'
|
|
59
|
+
rails: 'rails_7.2'
|
|
60
|
+
- ruby: '3.0'
|
|
61
|
+
rails: 'rails_8.0'
|
|
62
|
+
|
|
63
|
+
- ruby: '3.1'
|
|
64
|
+
rails: 'rails_5.0'
|
|
65
|
+
- ruby: '3.1'
|
|
66
|
+
rails: 'rails_5.1'
|
|
67
|
+
- ruby: '3.1'
|
|
68
|
+
rails: 'rails_5.2'
|
|
69
|
+
- ruby: '3.1'
|
|
70
|
+
rails: 'rails_8.0'
|
|
71
|
+
|
|
72
|
+
- ruby: '3.2'
|
|
73
|
+
rails: 'rails_5.0'
|
|
74
|
+
- ruby: '3.2'
|
|
75
|
+
rails: 'rails_5.1'
|
|
76
|
+
- ruby: '3.2'
|
|
77
|
+
rails: 'rails_5.2'
|
|
78
|
+
|
|
79
|
+
- ruby: '3.3'
|
|
80
|
+
rails: 'rails_5.0'
|
|
81
|
+
- ruby: '3.3'
|
|
82
|
+
rails: 'rails_5.1'
|
|
83
|
+
- ruby: '3.3'
|
|
84
|
+
rails: 'rails_5.2'
|
|
85
|
+
|
|
30
86
|
env:
|
|
31
|
-
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles
|
|
87
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.rails }}.gemfile
|
|
88
|
+
|
|
32
89
|
services:
|
|
33
90
|
redis:
|
|
34
91
|
image: redis
|
|
35
92
|
ports:
|
|
36
93
|
- 6379:6379
|
|
37
|
-
|
|
38
|
-
image: redis
|
|
39
|
-
ports:
|
|
40
|
-
- 6380:6380
|
|
41
|
-
distributed2:
|
|
42
|
-
image: redis
|
|
43
|
-
ports:
|
|
44
|
-
- 6381:6381
|
|
94
|
+
|
|
45
95
|
steps:
|
|
46
|
-
- uses: actions/checkout@
|
|
96
|
+
- uses: actions/checkout@v4
|
|
47
97
|
- uses: ruby/setup-ruby@v1
|
|
48
98
|
with:
|
|
49
99
|
ruby-version: ${{ matrix.ruby }}
|
|
50
100
|
bundler-cache: true
|
|
51
101
|
- run: bundle exec rake
|
|
52
|
-
lint:
|
|
53
|
-
runs-on: ubuntu-latest
|
|
54
|
-
steps:
|
|
55
|
-
- uses: actions/checkout@v3
|
|
56
|
-
with:
|
|
57
|
-
fetch-depth: 0
|
|
58
|
-
- uses: ruby/setup-ruby@v1
|
|
59
|
-
with:
|
|
60
|
-
ruby-version: 3.1
|
|
61
|
-
bundler-cache: true
|
|
62
|
-
- run: bundle exec rake lint
|
data/.gitignore
CHANGED
data/Appraisals
CHANGED
|
@@ -1,23 +1,64 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
appraise 'rails_5.0' do
|
|
2
4
|
gem 'redis-store'
|
|
3
5
|
gem 'redis-rack'
|
|
4
6
|
gem 'actionpack', '~> 5.0.0'
|
|
7
|
+
gem 'tzinfo', '~> 1.2'
|
|
5
8
|
end
|
|
6
9
|
|
|
7
|
-
appraise '
|
|
10
|
+
appraise 'rails_5.1' do
|
|
8
11
|
gem 'redis-store'
|
|
9
12
|
gem 'redis-rack'
|
|
10
13
|
gem 'actionpack', '~> 5.1.0'
|
|
14
|
+
gem 'tzinfo', '~> 1.2'
|
|
11
15
|
end
|
|
12
16
|
|
|
13
|
-
appraise '
|
|
17
|
+
appraise 'rails_5.2' do
|
|
14
18
|
gem 'redis-store'
|
|
15
19
|
gem 'redis-rack'
|
|
16
|
-
gem 'actionpack', '~> 5.
|
|
20
|
+
gem 'actionpack', '~> 5.2.0'
|
|
21
|
+
gem 'tzinfo', '~> 1.2'
|
|
17
22
|
end
|
|
18
23
|
|
|
19
|
-
appraise '
|
|
24
|
+
appraise 'rails_6.0' do
|
|
20
25
|
gem 'redis-store'
|
|
21
26
|
gem 'redis-rack'
|
|
22
27
|
gem 'actionpack', '~> 6.0.0'
|
|
28
|
+
gem 'tzinfo', '~> 1.2'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
appraise 'rails_6.1' do
|
|
32
|
+
gem 'redis-store'
|
|
33
|
+
gem 'redis-rack'
|
|
34
|
+
gem 'actionpack', '~> 6.1.0'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
appraise 'rails_7.0' do
|
|
38
|
+
gem 'redis-store'
|
|
39
|
+
gem 'redis-rack'
|
|
40
|
+
gem 'actionpack', '~> 7.0.0'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
appraise 'rails_7.1' do
|
|
44
|
+
gem 'redis-store'
|
|
45
|
+
gem 'redis-rack'
|
|
46
|
+
gem 'actionpack', '~> 7.1.0'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
appraise 'rails_7.2' do
|
|
50
|
+
gem 'redis-store'
|
|
51
|
+
gem 'redis-rack'
|
|
52
|
+
gem 'actionpack', '~> 7.2.0'
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
appraise 'rails_8.0' do
|
|
56
|
+
gem 'redis-store'
|
|
57
|
+
gem 'redis-rack'
|
|
58
|
+
gem 'actionpack', '~> 8.0.0'
|
|
59
|
+
|
|
60
|
+
# TODO: remove me when one of this PR is merged:
|
|
61
|
+
# * https://github.com/minitest/minitest-rails/pull/258
|
|
62
|
+
# * https://github.com/minitest/minitest-rails/pull/259
|
|
63
|
+
gem 'minitest-rails', git: 'https://github.com/n-rodriguez/minitest-rails.git', branch: 'wip/rails8'
|
|
23
64
|
end
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
v5.4.0 (2023-12-05)
|
|
2
|
+
--------------------------------------------------------------------------------
|
|
3
|
+
|
|
4
|
+
* Update gemspec to contain source code url
|
|
5
|
+
Igor Drozdov
|
|
6
|
+
|
|
7
|
+
* Allow redis-rack 3.x
|
|
8
|
+
Nicolas Rodriguez
|
|
9
|
+
|
|
1
10
|
v5.3.0 (2022-01-17)
|
|
2
11
|
--------------------------------------------------------------------------------
|
|
3
12
|
|
data/Gemfile
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
source 'https://rubygems.org'
|
|
2
4
|
gemspec
|
|
3
5
|
|
|
4
|
-
gem '
|
|
5
|
-
|
|
6
|
+
gem 'appraisal', git: 'https://github.com/thoughtbot/appraisal.git'
|
|
7
|
+
|
|
8
|
+
gem 'cgi'
|
|
9
|
+
gem 'minitest-rails'
|
|
6
10
|
gem 'mocha', '~> 0.14.0', require: 'mocha/setup'
|
|
7
|
-
gem '
|
|
8
|
-
gem 'appraisal', '~> 2.2'
|
|
11
|
+
gem 'rake', '>= 12.3.3'
|
|
9
12
|
gem 'redis-store-testing', github: 'redis-store/testing'
|
|
10
|
-
gem '
|
|
13
|
+
gem 'tzinfo'
|
data/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Redis stores for ActionPack
|
|
2
2
|
|
|
3
|
+
[](http://badge.fury.io/rb/redis-actionpack)
|
|
4
|
+
[](https://github.com/redis-store/redis-actionpack/actions)
|
|
5
|
+
[](https://codeclimate.com/github/redis-store/redis-actionpack)
|
|
6
|
+
|
|
3
7
|
__`redis-actionpack`__ provides a session store for __ActionPack__, specifically for __ActionDispatch__. See the main [redis-store readme](https://github.com/redis-store/redis-store) for general guidelines.
|
|
4
8
|
|
|
5
9
|
For guidelines on using our underlying cache store, see the main [redis-store readme](https://github.com/redis-store/redis-store).
|
|
@@ -58,12 +62,6 @@ bundle exec rake
|
|
|
58
62
|
|
|
59
63
|
If you are on **Snow Leopard** you have to run `env ARCHFLAGS="-arch x86_64" bundle exec rake`
|
|
60
64
|
|
|
61
|
-
## Status
|
|
62
|
-
|
|
63
|
-
[](http://badge.fury.io/rb/redis-actionpack)
|
|
64
|
-
[](http://travis-ci.org/redis-store/redis-actionpack?branch=master)
|
|
65
|
-
[](https://codeclimate.com/github/redis-store/redis-actionpack)
|
|
66
|
-
|
|
67
65
|
## Copyright
|
|
68
66
|
|
|
69
67
|
2009 - 2013 Luca Guidi - [http://lucaguidi.com](http://lucaguidi.com), released under the MIT license
|
data/Rakefile
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
-
gem "
|
|
6
|
-
gem "
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails"
|
|
7
8
|
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
8
|
-
gem "
|
|
9
|
-
gem "appraisal", "~> 2.2"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
10
|
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
-
gem "
|
|
11
|
+
gem "tzinfo", "~> 1.2"
|
|
12
12
|
gem "redis-store"
|
|
13
13
|
gem "redis-rack"
|
|
14
14
|
gem "actionpack", "~> 5.0.0"
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
-
gem "
|
|
6
|
-
gem "
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails"
|
|
7
8
|
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
8
|
-
gem "
|
|
9
|
-
gem "appraisal", "~> 2.2"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
10
|
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
-
gem "
|
|
11
|
+
gem "tzinfo", "~> 1.2"
|
|
12
12
|
gem "redis-store"
|
|
13
13
|
gem "redis-rack"
|
|
14
14
|
gem "actionpack", "~> 5.1.0"
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
-
gem "
|
|
6
|
-
gem "
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails"
|
|
7
8
|
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
8
|
-
gem "
|
|
9
|
-
gem "appraisal", "~> 2.2"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
10
|
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
-
gem "
|
|
11
|
+
gem "tzinfo", "~> 1.2"
|
|
12
12
|
gem "redis-store"
|
|
13
13
|
gem "redis-rack"
|
|
14
|
-
gem "actionpack", "~> 5.
|
|
14
|
+
gem "actionpack", "~> 5.2.0"
|
|
15
15
|
|
|
16
16
|
gemspec path: "../"
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
-
gem "
|
|
6
|
-
gem "
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails"
|
|
7
8
|
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
8
|
-
gem "
|
|
9
|
-
gem "appraisal", "~> 2.2"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
10
|
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
-
gem "
|
|
11
|
+
gem "tzinfo", "~> 1.2"
|
|
12
12
|
gem "redis-store"
|
|
13
13
|
gem "redis-rack"
|
|
14
14
|
gem "actionpack", "~> 6.0.0"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails"
|
|
8
|
+
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
|
+
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
+
gem "tzinfo"
|
|
12
|
+
gem "redis-store"
|
|
13
|
+
gem "redis-rack"
|
|
14
|
+
gem "actionpack", "~> 6.1.0"
|
|
15
|
+
|
|
16
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails"
|
|
8
|
+
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
|
+
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
+
gem "tzinfo"
|
|
12
|
+
gem "redis-store"
|
|
13
|
+
gem "redis-rack"
|
|
14
|
+
gem "actionpack", "~> 7.0.0"
|
|
15
|
+
|
|
16
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails"
|
|
8
|
+
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
|
+
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
+
gem "tzinfo"
|
|
12
|
+
gem "redis-store"
|
|
13
|
+
gem "redis-rack"
|
|
14
|
+
gem "actionpack", "~> 7.1.0"
|
|
15
|
+
|
|
16
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails"
|
|
8
|
+
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
|
+
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
+
gem "tzinfo"
|
|
12
|
+
gem "redis-store"
|
|
13
|
+
gem "redis-rack"
|
|
14
|
+
gem "actionpack", "~> 7.2.0"
|
|
15
|
+
|
|
16
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
|
|
6
|
+
gem "cgi"
|
|
7
|
+
gem "minitest-rails", git: "https://github.com/n-rodriguez/minitest-rails.git", branch: "wip/rails8"
|
|
8
|
+
gem "mocha", "~> 0.14.0", require: "mocha/setup"
|
|
9
|
+
gem "rake", ">= 12.3.3"
|
|
10
|
+
gem "redis-store-testing", github: "redis-store/testing"
|
|
11
|
+
gem "tzinfo"
|
|
12
|
+
gem "redis-store"
|
|
13
|
+
gem "redis-rack"
|
|
14
|
+
gem "actionpack", "~> 8.0.0"
|
|
15
|
+
|
|
16
|
+
gemspec path: "../"
|
data/lib/redis-actionpack.rb
CHANGED
data/redis-actionpack.gemspec
CHANGED
|
@@ -1,27 +1,25 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/redis/actionpack/version'
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |s|
|
|
6
6
|
s.name = 'redis-actionpack'
|
|
7
7
|
s.version = Redis::ActionPack::VERSION
|
|
8
8
|
s.authors = ['Luca Guidi']
|
|
9
9
|
s.email = ['me@lucaguidi.com']
|
|
10
|
-
s.homepage = '
|
|
11
|
-
s.summary =
|
|
10
|
+
s.homepage = 'https://redis-store.org/redis-actionpack/'
|
|
11
|
+
s.summary = 'Redis session store for ActionPack'
|
|
12
12
|
s.description = "#{s.summary}. Used for storing the Rails session in Redis."
|
|
13
13
|
s.license = 'MIT'
|
|
14
14
|
s.metadata = {
|
|
15
|
-
|
|
15
|
+
'source_code_uri' => 'https://github.com/redis-store/redis-actionpack'
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
s.
|
|
19
|
-
|
|
20
|
-
s.
|
|
21
|
-
s.require_paths = ['lib']
|
|
22
|
-
s.required_ruby_version = '>= 2.3.0'
|
|
18
|
+
s.required_ruby_version = '>= 2.7.0'
|
|
19
|
+
|
|
20
|
+
s.files = `git ls-files`.split("\n")
|
|
23
21
|
|
|
24
|
-
s.
|
|
25
|
-
s.
|
|
26
|
-
s.
|
|
22
|
+
s.add_dependency 'actionpack', '>= 5'
|
|
23
|
+
s.add_dependency 'redis-rack', '>= 2.1.0', '< 4'
|
|
24
|
+
s.add_dependency 'redis-store', '>= 1.1.0', '< 2'
|
|
27
25
|
end
|
data/test/integration/{redis_store_integration_test.rb → default/redis_store_integration_test.rb}
RENAMED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
|
+
return unless Gem::Version.new(ActiveSupport.version) < Gem::Version.new('7.2')
|
|
4
|
+
|
|
3
5
|
class RedisStoreIntegrationTest < ::ActionDispatch::IntegrationTest
|
|
4
6
|
SessionKey = '_session_id'
|
|
5
7
|
SessionSecret = 'b3c631c314c0bbca50c1b2843150fe33'
|
|
@@ -95,7 +97,11 @@ class RedisStoreIntegrationTest < ::ActionDispatch::IntegrationTest
|
|
|
95
97
|
cookie = cookies.instance_variable_get('@cookies').first
|
|
96
98
|
options = cookie.instance_variable_get('@options')
|
|
97
99
|
|
|
98
|
-
|
|
100
|
+
if Gem::Version.new(ActiveSupport.version) < Gem::Version.new('7.1')
|
|
101
|
+
assert options.key?('HttpOnly')
|
|
102
|
+
else
|
|
103
|
+
assert options.key?('httponly')
|
|
104
|
+
end
|
|
99
105
|
end
|
|
100
106
|
end
|
|
101
107
|
|
|
@@ -107,7 +113,11 @@ class RedisStoreIntegrationTest < ::ActionDispatch::IntegrationTest
|
|
|
107
113
|
cookie = cookies.instance_variable_get('@cookies').first
|
|
108
114
|
options = cookie.instance_variable_get('@options')
|
|
109
115
|
|
|
110
|
-
|
|
116
|
+
if Gem::Version.new(ActiveSupport.version) < Gem::Version.new('7.1')
|
|
117
|
+
assert !options.key?('HttpOnly')
|
|
118
|
+
else
|
|
119
|
+
assert !options.key?('httponly')
|
|
120
|
+
end
|
|
111
121
|
end
|
|
112
122
|
end
|
|
113
123
|
|
|
@@ -244,7 +254,7 @@ class RedisStoreIntegrationTest < ::ActionDispatch::IntegrationTest
|
|
|
244
254
|
test "session store with all domains" do
|
|
245
255
|
with_test_route_set(:domain => :all) do
|
|
246
256
|
get '/set_session_value'
|
|
247
|
-
assert_match(/domain
|
|
257
|
+
assert_match(/domain=\.?example\.com/, headers['Set-Cookie'])
|
|
248
258
|
end
|
|
249
259
|
end
|
|
250
260
|
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
return unless Gem::Version.new(ActiveSupport.version) >= Gem::Version.new('7.2')
|
|
4
|
+
|
|
5
|
+
class RedisStoreIntegrationTest < ::ActionDispatch::IntegrationTest
|
|
6
|
+
SessionKey = '_session_id'
|
|
7
|
+
SessionSecret = 'b3c631c314c0bbca50c1b2843150fe33'
|
|
8
|
+
|
|
9
|
+
test "reads the data" do
|
|
10
|
+
with_test_route_set do
|
|
11
|
+
get '/set_session_value'
|
|
12
|
+
assert_response :success
|
|
13
|
+
assert cookies['_session_id'].present?
|
|
14
|
+
|
|
15
|
+
get '/get_session_value'
|
|
16
|
+
assert_response :success
|
|
17
|
+
assert_equal response.body, 'foo: "bar"'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test "should get nil session value" do
|
|
22
|
+
with_test_route_set do
|
|
23
|
+
get '/get_session_value'
|
|
24
|
+
assert_response :success
|
|
25
|
+
assert_equal 'foo: nil', response.body
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
test "should delete the data after session reset" do
|
|
30
|
+
with_test_route_set do
|
|
31
|
+
get '/set_session_value'
|
|
32
|
+
assert_response :success
|
|
33
|
+
assert cookies['_session_id'].present?
|
|
34
|
+
if cookies.respond_to?(:get_cookie)
|
|
35
|
+
session_cookie = cookies.get_cookie('_session_id')
|
|
36
|
+
else
|
|
37
|
+
session_cookie = cookies.send(:hash_for)['_session_id']
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
get '/call_reset_session'
|
|
41
|
+
assert_response :success
|
|
42
|
+
assert !headers['Set-Cookie'].blank?
|
|
43
|
+
|
|
44
|
+
cookies << session_cookie
|
|
45
|
+
|
|
46
|
+
get '/get_session_value'
|
|
47
|
+
assert_response :success
|
|
48
|
+
assert_equal 'foo: nil', response.body
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
test "should set a non-secure cookie by default" do
|
|
53
|
+
with_test_route_set do
|
|
54
|
+
https!
|
|
55
|
+
|
|
56
|
+
get '/set_session_value'
|
|
57
|
+
assert_response :success
|
|
58
|
+
|
|
59
|
+
cookie = cookies.instance_variable_get('@cookies').first
|
|
60
|
+
|
|
61
|
+
assert !cookie.secure?
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
test "should set a secure cookie when the 'secure' option is set" do
|
|
66
|
+
cookie_options(secure: true)
|
|
67
|
+
|
|
68
|
+
with_test_route_set do
|
|
69
|
+
https!
|
|
70
|
+
|
|
71
|
+
get '/set_session_value'
|
|
72
|
+
assert_response :success
|
|
73
|
+
|
|
74
|
+
cookie = cookies.instance_variable_get('@cookies').first
|
|
75
|
+
|
|
76
|
+
assert cookie.secure?
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
test "should set a signed cookie when the 'signed' option is set" do
|
|
81
|
+
cookie_options(signed: true)
|
|
82
|
+
|
|
83
|
+
with_test_route_set do
|
|
84
|
+
https!
|
|
85
|
+
|
|
86
|
+
get '/set_session_value'
|
|
87
|
+
assert_response :success
|
|
88
|
+
|
|
89
|
+
cookie = cookies.instance_variable_get('@cookies').first
|
|
90
|
+
|
|
91
|
+
assert_includes cookie.raw, '_session_id='
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
test "should set a http-only cookie by default" do
|
|
97
|
+
with_test_route_set do
|
|
98
|
+
get '/set_session_value'
|
|
99
|
+
assert_response :success
|
|
100
|
+
|
|
101
|
+
cookie = cookies.instance_variable_get('@cookies').first
|
|
102
|
+
options = cookie.instance_variable_get('@options')
|
|
103
|
+
|
|
104
|
+
if Gem::Version.new(ActiveSupport.version) < Gem::Version.new('7.1')
|
|
105
|
+
assert options.key?('HttpOnly')
|
|
106
|
+
else
|
|
107
|
+
assert options.key?('httponly')
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
test "should set a non-http-only cookie when the 'httponlty' option is set to false" do
|
|
113
|
+
cookie_options(httponly: false)
|
|
114
|
+
|
|
115
|
+
with_test_route_set do
|
|
116
|
+
get '/set_session_value'
|
|
117
|
+
assert_response :success
|
|
118
|
+
|
|
119
|
+
cookie = cookies.instance_variable_get('@cookies').first
|
|
120
|
+
options = cookie.instance_variable_get('@options')
|
|
121
|
+
|
|
122
|
+
if Gem::Version.new(ActiveSupport.version) < Gem::Version.new('7.1')
|
|
123
|
+
assert !options.key?('HttpOnly')
|
|
124
|
+
else
|
|
125
|
+
assert !options.key?('httponly')
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
test "should not send cookies on write, not read" do
|
|
131
|
+
with_test_route_set do
|
|
132
|
+
get '/get_session_value'
|
|
133
|
+
assert_response :success
|
|
134
|
+
assert_equal 'foo: nil', response.body
|
|
135
|
+
assert cookies['_session_id'].nil?
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
test "should set session value after session reset" do
|
|
140
|
+
with_test_route_set do
|
|
141
|
+
get '/set_session_value'
|
|
142
|
+
assert_response :success
|
|
143
|
+
assert cookies['_session_id'].present?
|
|
144
|
+
session_id = cookies['_session_id']
|
|
145
|
+
|
|
146
|
+
get '/call_reset_session'
|
|
147
|
+
assert_response :success
|
|
148
|
+
assert !headers['Set-Cookie'].blank?
|
|
149
|
+
|
|
150
|
+
get '/get_session_value'
|
|
151
|
+
assert_response :success
|
|
152
|
+
assert_equal 'foo: nil', response.body
|
|
153
|
+
|
|
154
|
+
get '/get_session_id'
|
|
155
|
+
assert_response :success
|
|
156
|
+
assert(response.body != session_id)
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
test "should be able to read session id without accessing the session hash" do
|
|
161
|
+
with_test_route_set do
|
|
162
|
+
get '/set_session_value'
|
|
163
|
+
assert_response :success
|
|
164
|
+
assert cookies['_session_id'].present?
|
|
165
|
+
session_id = cookies['_session_id']
|
|
166
|
+
|
|
167
|
+
get '/get_session_id'
|
|
168
|
+
assert_response :success
|
|
169
|
+
assert_equal response.body, session_id
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
test "should auto-load unloaded class" do
|
|
174
|
+
with_test_route_set do
|
|
175
|
+
with_autoload_path "session_autoload_test" do
|
|
176
|
+
get '/set_serialized_session_value'
|
|
177
|
+
assert_response :success
|
|
178
|
+
assert cookies['_session_id'].present?
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
with_autoload_path "session_autoload_test" do
|
|
182
|
+
get '/get_session_id'
|
|
183
|
+
assert_response :success
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
with_autoload_path "session_autoload_test" do
|
|
187
|
+
get '/get_session_value'
|
|
188
|
+
assert_response :success
|
|
189
|
+
assert_equal response.body, 'foo: #<SessionAutoloadTest::Foo bar:"baz">'
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
test "should not resend the cookie again if session_id cookie is already exists" do
|
|
195
|
+
with_test_route_set do
|
|
196
|
+
get '/set_session_value'
|
|
197
|
+
assert_response :success
|
|
198
|
+
assert cookies['_session_id'].present?
|
|
199
|
+
|
|
200
|
+
get '/get_session_value'
|
|
201
|
+
assert_response :success
|
|
202
|
+
assert headers['Set-Cookie'].nil?
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
test "should prevent session fixation" do
|
|
207
|
+
with_test_route_set do
|
|
208
|
+
get '/get_session_value'
|
|
209
|
+
assert_response :success
|
|
210
|
+
assert_equal 'foo: nil', response.body
|
|
211
|
+
session_id = cookies['_session_id']
|
|
212
|
+
|
|
213
|
+
reset!
|
|
214
|
+
|
|
215
|
+
get '/set_session_value', headers: { _session_id: session_id }
|
|
216
|
+
assert_response :success
|
|
217
|
+
assert(cookies['_session_id'] != session_id)
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
test "should write the data with expiration time" do
|
|
222
|
+
with_test_route_set do
|
|
223
|
+
get '/set_session_value_with_expiry'
|
|
224
|
+
assert_response :success
|
|
225
|
+
|
|
226
|
+
get '/get_session_value'
|
|
227
|
+
assert_response :success
|
|
228
|
+
assert_equal response.body, 'foo: "bar"'
|
|
229
|
+
|
|
230
|
+
sleep 1
|
|
231
|
+
|
|
232
|
+
get '/get_session_value'
|
|
233
|
+
assert_response :success
|
|
234
|
+
assert_equal 'foo: nil', response.body
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
test "session store with explicit domain" do
|
|
239
|
+
cookie_options(:domain => "example.es")
|
|
240
|
+
|
|
241
|
+
with_test_route_set do
|
|
242
|
+
get '/set_session_value'
|
|
243
|
+
assert_match(/domain=example\.es/, headers['Set-Cookie'])
|
|
244
|
+
headers['Set-Cookie']
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
test "session store without domain" do
|
|
249
|
+
with_test_route_set do
|
|
250
|
+
get '/set_session_value'
|
|
251
|
+
assert_no_match(/domain\=/, headers['Set-Cookie'])
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
test "session store with nil domain" do
|
|
256
|
+
cookie_options(:domain => nil)
|
|
257
|
+
|
|
258
|
+
with_test_route_set do
|
|
259
|
+
get '/set_session_value'
|
|
260
|
+
assert_no_match(/domain\=/, headers['Set-Cookie'])
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
test "session store with all domains" do
|
|
265
|
+
cookie_options(:domain => :all)
|
|
266
|
+
|
|
267
|
+
with_test_route_set do
|
|
268
|
+
get '/set_session_value'
|
|
269
|
+
assert_match(/domain=\.?example\.com/, headers['Set-Cookie'])
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
private
|
|
274
|
+
|
|
275
|
+
def cookie_options(options = {})
|
|
276
|
+
(@cookie_options ||= { key: SessionKey }).merge!(options)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def app
|
|
280
|
+
@app ||= self.class.build_app do |middleware|
|
|
281
|
+
middleware.use ActionDispatch::Session::RedisStore, cookie_options
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
# from actionpack/test/abstract_unit.rb
|
|
286
|
+
class RoutedRackApp
|
|
287
|
+
class Config < Struct.new(:middleware)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
attr_reader :routes
|
|
291
|
+
|
|
292
|
+
def initialize(routes, &blk)
|
|
293
|
+
@routes = routes
|
|
294
|
+
@stack = ActionDispatch::MiddlewareStack.new(&blk)
|
|
295
|
+
@app = @stack.build(@routes)
|
|
296
|
+
@secret = SecureRandom.hex
|
|
297
|
+
@key_generator = ActiveSupport::CachingKeyGenerator.new(
|
|
298
|
+
ActiveSupport::KeyGenerator.new(@secret, iterations: 2)
|
|
299
|
+
)
|
|
300
|
+
end
|
|
301
|
+
def call(env)
|
|
302
|
+
env[ActionDispatch::Cookies::GENERATOR_KEY] = @key_generator
|
|
303
|
+
env[ActionDispatch::Cookies::SIGNED_COOKIE_SALT] = SecureRandom.hex
|
|
304
|
+
if defined? ActionDispatch::Cookies::COOKIES_ROTATIONS
|
|
305
|
+
env[ActionDispatch::Cookies::COOKIES_ROTATIONS] = ActiveSupport::Messages::RotationConfiguration.new
|
|
306
|
+
end
|
|
307
|
+
@app.call(env)
|
|
308
|
+
end
|
|
309
|
+
def config
|
|
310
|
+
Config.new(@stack)
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
# from actionpack/test/abstract_unit.rb
|
|
315
|
+
def self.build_app(routes = nil)
|
|
316
|
+
RoutedRackApp.new(routes || ActionDispatch::Routing::RouteSet.new) do |middleware|
|
|
317
|
+
middleware.use ActionDispatch::DebugExceptions
|
|
318
|
+
middleware.use ActionDispatch::Callbacks
|
|
319
|
+
# middleware.use ActionDispatch::ParamsParser
|
|
320
|
+
middleware.use ActionDispatch::Cookies
|
|
321
|
+
middleware.use ActionDispatch::Flash
|
|
322
|
+
middleware.use Rack::Head
|
|
323
|
+
yield(middleware) if block_given?
|
|
324
|
+
end
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
# from actionpack/test/dispatch/session/cookie_store_test.rb
|
|
328
|
+
def with_test_route_set
|
|
329
|
+
with_routing do |set|
|
|
330
|
+
set.draw do
|
|
331
|
+
get :no_session_access, to: 'test#no_session_access'
|
|
332
|
+
get :set_session_value, to: 'test#set_session_value'
|
|
333
|
+
get :set_session_value_with_expiry, to: 'test#set_session_value_with_expiry'
|
|
334
|
+
get :set_serialized_session_value, to: 'test#set_serialized_session_value'
|
|
335
|
+
get :get_session_value, to: 'test#get_session_value'
|
|
336
|
+
get :get_session_id, to: 'test#get_session_id'
|
|
337
|
+
get :call_reset_session, to: 'test#call_reset_session'
|
|
338
|
+
end
|
|
339
|
+
yield
|
|
340
|
+
end
|
|
341
|
+
end
|
|
342
|
+
end
|
data/test/test_helper.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'bundler/setup'
|
|
2
2
|
require 'minitest/autorun'
|
|
3
|
+
require 'active_support'
|
|
3
4
|
require 'active_support/core_ext/numeric/time'
|
|
4
5
|
|
|
5
6
|
ENV["RAILS_ENV"] = "test"
|
|
@@ -8,17 +9,33 @@ require "rails/test_help"
|
|
|
8
9
|
|
|
9
10
|
Rails.backtrace_cleaner.remove_silencers!
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
|
|
13
|
+
if Gem::Version.new(ActiveSupport.version) > Gem::Version.new('7.0')
|
|
14
|
+
# See: https://github.com/rails/rails/blob/v7.0.0/actionpack/test/abstract_unit.rb#L161
|
|
15
|
+
def with_autoload_path(path)
|
|
16
|
+
path = File.join(__dir__, "fixtures", path)
|
|
17
|
+
Zeitwerk.with_loader do |loader|
|
|
18
|
+
loader.push_dir(path)
|
|
19
|
+
loader.setup
|
|
18
20
|
yield
|
|
19
21
|
ensure
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
loader.unload
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
else
|
|
26
|
+
# See: https://github.com/rails/rails/blob/v6.1.0/actionpack/test/abstract_unit.rb#L162
|
|
27
|
+
def with_autoload_path(path)
|
|
28
|
+
path = File.join(File.dirname(__FILE__), "fixtures", path)
|
|
29
|
+
if ActiveSupport::Dependencies.autoload_paths.include?(path)
|
|
30
|
+
yield
|
|
31
|
+
else
|
|
32
|
+
begin
|
|
33
|
+
ActiveSupport::Dependencies.autoload_paths << path
|
|
34
|
+
yield
|
|
35
|
+
ensure
|
|
36
|
+
ActiveSupport::Dependencies.autoload_paths.reject! {|p| p == path}
|
|
37
|
+
ActiveSupport::Dependencies.clear
|
|
38
|
+
end
|
|
22
39
|
end
|
|
23
40
|
end
|
|
24
41
|
end
|
metadata
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: redis-actionpack
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Luca Guidi
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-11-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: actionpack
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
20
|
-
- - "<"
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: '2'
|
|
19
|
+
version: '5'
|
|
23
20
|
type: :runtime
|
|
24
21
|
prerelease: false
|
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
23
|
requirements:
|
|
27
24
|
- - ">="
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
|
-
version:
|
|
30
|
-
- - "<"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '2'
|
|
26
|
+
version: '5'
|
|
33
27
|
- !ruby/object:Gem::Dependency
|
|
34
28
|
name: redis-rack
|
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -51,25 +45,25 @@ dependencies:
|
|
|
51
45
|
- !ruby/object:Gem::Version
|
|
52
46
|
version: '4'
|
|
53
47
|
- !ruby/object:Gem::Dependency
|
|
54
|
-
name:
|
|
48
|
+
name: redis-store
|
|
55
49
|
requirement: !ruby/object:Gem::Requirement
|
|
56
50
|
requirements:
|
|
57
51
|
- - ">="
|
|
58
52
|
- !ruby/object:Gem::Version
|
|
59
|
-
version:
|
|
53
|
+
version: 1.1.0
|
|
60
54
|
- - "<"
|
|
61
55
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: '
|
|
56
|
+
version: '2'
|
|
63
57
|
type: :runtime
|
|
64
58
|
prerelease: false
|
|
65
59
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
60
|
requirements:
|
|
67
61
|
- - ">="
|
|
68
62
|
- !ruby/object:Gem::Version
|
|
69
|
-
version:
|
|
63
|
+
version: 1.1.0
|
|
70
64
|
- - "<"
|
|
71
65
|
- !ruby/object:Gem::Version
|
|
72
|
-
version: '
|
|
66
|
+
version: '2'
|
|
73
67
|
description: Redis session store for ActionPack. Used for storing the Rails session
|
|
74
68
|
in Redis.
|
|
75
69
|
email:
|
|
@@ -79,6 +73,7 @@ extensions: []
|
|
|
79
73
|
extra_rdoc_files: []
|
|
80
74
|
files:
|
|
81
75
|
- ".github/auto-assign-issues.yml"
|
|
76
|
+
- ".github/dependabot.yml"
|
|
82
77
|
- ".github/release.yml"
|
|
83
78
|
- ".github/workflows/ci.yml"
|
|
84
79
|
- ".github/workflows/publish.yml"
|
|
@@ -90,11 +85,15 @@ files:
|
|
|
90
85
|
- MIT-LICENSE
|
|
91
86
|
- README.md
|
|
92
87
|
- Rakefile
|
|
93
|
-
-
|
|
94
|
-
- gemfiles/rails_5.
|
|
95
|
-
- gemfiles/rails_5.
|
|
96
|
-
- gemfiles/
|
|
97
|
-
- gemfiles/rails_6.
|
|
88
|
+
- gemfiles/rails_5.0.gemfile
|
|
89
|
+
- gemfiles/rails_5.1.gemfile
|
|
90
|
+
- gemfiles/rails_5.2.gemfile
|
|
91
|
+
- gemfiles/rails_6.0.gemfile
|
|
92
|
+
- gemfiles/rails_6.1.gemfile
|
|
93
|
+
- gemfiles/rails_7.0.gemfile
|
|
94
|
+
- gemfiles/rails_7.1.gemfile
|
|
95
|
+
- gemfiles/rails_7.2.gemfile
|
|
96
|
+
- gemfiles/rails_8.0.gemfile
|
|
98
97
|
- lib/action_dispatch/middleware/session/redis_store.rb
|
|
99
98
|
- lib/redis-actionpack.rb
|
|
100
99
|
- lib/redis/actionpack/version.rb
|
|
@@ -109,12 +108,11 @@ files:
|
|
|
109
108
|
- test/dummy/config/boot.rb
|
|
110
109
|
- test/dummy/config/environment.rb
|
|
111
110
|
- test/dummy/config/routes.rb
|
|
112
|
-
- test/dummy/script/rails
|
|
113
111
|
- test/fixtures/session_autoload_test/session_autoload_test/foo.rb
|
|
114
|
-
- test/
|
|
115
|
-
- test/integration/redis_store_integration_test.rb
|
|
112
|
+
- test/integration/default/redis_store_integration_test.rb
|
|
113
|
+
- test/integration/rails7.2/redis_store_integration_test.rb
|
|
116
114
|
- test/test_helper.rb
|
|
117
|
-
homepage:
|
|
115
|
+
homepage: https://redis-store.org/redis-actionpack/
|
|
118
116
|
licenses:
|
|
119
117
|
- MIT
|
|
120
118
|
metadata:
|
|
@@ -127,30 +125,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
127
125
|
requirements:
|
|
128
126
|
- - ">="
|
|
129
127
|
- !ruby/object:Gem::Version
|
|
130
|
-
version: 2.
|
|
128
|
+
version: 2.7.0
|
|
131
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
130
|
requirements:
|
|
133
131
|
- - ">="
|
|
134
132
|
- !ruby/object:Gem::Version
|
|
135
133
|
version: '0'
|
|
136
134
|
requirements: []
|
|
137
|
-
rubygems_version: 3.
|
|
135
|
+
rubygems_version: 3.4.10
|
|
138
136
|
signing_key:
|
|
139
137
|
specification_version: 4
|
|
140
138
|
summary: Redis session store for ActionPack
|
|
141
|
-
test_files:
|
|
142
|
-
- test/dummy/.gitignore
|
|
143
|
-
- test/dummy/Rakefile
|
|
144
|
-
- test/dummy/app/controllers/test_controller.rb
|
|
145
|
-
- test/dummy/app/views/test/get_session_id.html.erb
|
|
146
|
-
- test/dummy/app/views/test/get_session_value.html.erb
|
|
147
|
-
- test/dummy/config.ru
|
|
148
|
-
- test/dummy/config/application.rb
|
|
149
|
-
- test/dummy/config/boot.rb
|
|
150
|
-
- test/dummy/config/environment.rb
|
|
151
|
-
- test/dummy/config/routes.rb
|
|
152
|
-
- test/dummy/script/rails
|
|
153
|
-
- test/fixtures/session_autoload_test/session_autoload_test/foo.rb
|
|
154
|
-
- test/gemfiles/Gemfile.rails-6.0.x
|
|
155
|
-
- test/integration/redis_store_integration_test.rb
|
|
156
|
-
- test/test_helper.rb
|
|
139
|
+
test_files: []
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
puts '-v 1.13.1' if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('2.3.0')
|
data/test/dummy/script/rails
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
|
3
|
-
|
|
4
|
-
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
|
5
|
-
require File.expand_path('../../config/boot', __FILE__)
|
|
6
|
-
require 'rails/commands'
|