rack-redic 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rack/session/redic.rb +20 -13
- data/rack-redic.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 060c56a771cd80ea2e61cb4abbf91406e8766daa
|
4
|
+
data.tar.gz: 4f77b38762b713d241ea93a5daf9a70241f4e1f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21d1c9430203b82f90daabe32fcbd30050468b2f59c693ec454cbbcf2ff62398a580c86486cb60b7631467e0e7b74dca44e67bc317e20b3458e51b39b6cfface
|
7
|
+
data.tar.gz: c63d41ef4a89ae67783e12d70a0cd27c82a1a3803af6b3b7127575a398f25a8fe413baac3b365e93c36d64011c12457831f87a53d7df2f18f88e89cc176637b5
|
data/lib/rack/session/redic.rb
CHANGED
@@ -28,6 +28,8 @@ module Rack
|
|
28
28
|
# Any other options will get passed to Rack::Session::Abstract::Persisted.
|
29
29
|
#
|
30
30
|
class Redic < Abstract::Persisted
|
31
|
+
REDIS_URL = 'REDIS_URL'.freeze
|
32
|
+
|
31
33
|
def initialize(app, options = {})
|
32
34
|
super
|
33
35
|
|
@@ -35,7 +37,7 @@ module Rack
|
|
35
37
|
@storage = Storage.new(
|
36
38
|
options[:expire_after],
|
37
39
|
options.delete(:marshaller) { Marshal },
|
38
|
-
options.delete(:url) { ENV.fetch(
|
40
|
+
options.delete(:url) { ENV.fetch(REDIS_URL) }
|
39
41
|
)
|
40
42
|
end
|
41
43
|
|
@@ -48,7 +50,7 @@ module Rack
|
|
48
50
|
end
|
49
51
|
|
50
52
|
# Find the session (or generate a blank one).
|
51
|
-
def find_session(
|
53
|
+
def find_session(_req, sid)
|
52
54
|
@mutex.synchronize do
|
53
55
|
unless sid and session = @storage.get(sid)
|
54
56
|
sid, session = generate_sid, {}
|
@@ -60,7 +62,7 @@ module Rack
|
|
60
62
|
end
|
61
63
|
|
62
64
|
# Write the session.
|
63
|
-
def write_session(
|
65
|
+
def write_session(_req, session_id, new_session, _options)
|
64
66
|
@mutex.synchronize do
|
65
67
|
@storage.set(session_id, new_session)
|
66
68
|
|
@@ -69,7 +71,7 @@ module Rack
|
|
69
71
|
end
|
70
72
|
|
71
73
|
# Kill the session.
|
72
|
-
def delete_session(
|
74
|
+
def delete_session(_req, session_id, options)
|
73
75
|
@mutex.synchronize do
|
74
76
|
@storage.delete(session_id)
|
75
77
|
generate_sid unless options[:drop]
|
@@ -80,10 +82,16 @@ module Rack
|
|
80
82
|
|
81
83
|
# A wrapper around Redic to simplify calls.
|
82
84
|
class Storage
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
85
|
+
# Redis commands.
|
86
|
+
DELETE = 'DEL'.freeze
|
87
|
+
EX = 'EX'.freeze
|
88
|
+
EXISTS = 'EXISTS'.freeze
|
89
|
+
GET = 'GET'.freeze
|
90
|
+
SET = 'SET'.freeze
|
91
|
+
|
92
|
+
# Assorted.
|
93
|
+
PACK = 'm'.freeze
|
94
|
+
ZERO = 0
|
87
95
|
|
88
96
|
def initialize(expires, marshaller, url)
|
89
97
|
@expires = expires
|
@@ -92,7 +100,7 @@ module Rack
|
|
92
100
|
end
|
93
101
|
|
94
102
|
def exists?(id)
|
95
|
-
@storage.call(EXISTS, id) !=
|
103
|
+
@storage.call(EXISTS, id) != ZERO
|
96
104
|
end
|
97
105
|
|
98
106
|
def get(id)
|
@@ -101,7 +109,7 @@ module Rack
|
|
101
109
|
|
102
110
|
def set(id, object)
|
103
111
|
arguments = [SET, id, serialize(object)]
|
104
|
-
arguments = arguments + [
|
112
|
+
arguments = arguments + [EX, @expires] if @expires
|
105
113
|
|
106
114
|
@storage.call(*arguments)
|
107
115
|
end
|
@@ -114,13 +122,12 @@ module Rack
|
|
114
122
|
|
115
123
|
# Should always return a string.
|
116
124
|
def serialize(object)
|
117
|
-
[Zlib::Deflate.deflate(@marshaller.dump(object))].pack(
|
125
|
+
[Zlib::Deflate.deflate(@marshaller.dump(object))].pack(PACK)
|
118
126
|
end
|
119
127
|
|
120
128
|
# Should always return the session object.
|
121
129
|
def deserialize(string)
|
122
|
-
|
123
|
-
@marshaller.load(Zlib::Inflate.inflate(string.unpack('m').first))
|
130
|
+
@marshaller.load(Zlib::Inflate.inflate(string.unpack(PACK).first))
|
124
131
|
end
|
125
132
|
end
|
126
133
|
end
|
data/rack-redic.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-redic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Lecklider
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|