Skip to content

Commit 0fa232b

Browse files
authored
Merge pull request #204 from TobiasBales/allow-subclassing-session-store
Allow subclasses of session store to override session_class
2 parents 2082e1d + 35cffd2 commit 0fa232b

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

lib/action_dispatch/session/active_record_store.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ module Session
5555
class ActiveRecordStore < ActionDispatch::Session::AbstractSecureStore
5656
# The class used for session storage. Defaults to
5757
# ActiveRecord::SessionStore::Session
58-
cattr_accessor :session_class
58+
class_attribute :session_class
5959

6060
SESSION_RECORD_KEY = 'rack.session.record'
6161
ENV_SESSION_OPTIONS_KEY = Rack::RACK_SESSION_OPTIONS
@@ -67,7 +67,7 @@ def get_session(request, sid)
6767
# If the sid was nil or if there is no pre-existing session under the sid,
6868
# force the generation of a new sid and associate a new session associated with the new sid
6969
sid = generate_sid
70-
session = @@session_class.new(:session_id => sid.private_id, :data => {})
70+
session = session_class.new(:session_id => sid.private_id, :data => {})
7171
end
7272
request.env[SESSION_RECORD_KEY] = session
7373
[sid, session.data]
@@ -106,7 +106,7 @@ def delete_session(request, session_id, options)
106106
new_sid = generate_sid
107107

108108
if options[:renew]
109-
new_model = @@session_class.new(:session_id => new_sid.private_id, :data => data)
109+
new_model = session_class.new(:session_id => new_sid.private_id, :data => data)
110110
new_model.save
111111
request.env[SESSION_RECORD_KEY] = new_model
112112
end
@@ -120,7 +120,7 @@ def get_session_model(request, id)
120120
model = get_session_with_fallback(id)
121121
unless model
122122
id = generate_sid
123-
model = @@session_class.new(:session_id => id.private_id, :data => {})
123+
model = session_class.new(:session_id => id.private_id, :data => {})
124124
model.save
125125
end
126126
if request.env[ENV_SESSION_OPTIONS_KEY][:id].nil?
@@ -134,9 +134,9 @@ def get_session_model(request, id)
134134

135135
def get_session_with_fallback(sid)
136136
if sid && !self.class.private_session_id?(sid.public_id)
137-
if (secure_session = @@session_class.find_by_session_id(sid.private_id))
137+
if (secure_session = session_class.find_by_session_id(sid.private_id))
138138
secure_session
139-
elsif (insecure_session = @@session_class.find_by_session_id(sid.public_id))
139+
elsif (insecure_session = session_class.find_by_session_id(sid.public_id))
140140
insecure_session.session_id = sid.private_id # this causes the session to be secured
141141
insecure_session
142142
end

0 commit comments

Comments
 (0)