3 require 'cgi/session/pstore'
6 # * Expose the CGI instance to session stores.
7 # * Don't require 'digest/md5' whenever a new session id is generated.
9 def self.generate_unique_id(constant
= nil)
10 ActiveSupport
::SecureRandom.hex(16)
13 # Make the CGI instance available to session stores.
16 alias_method
:initialize_without_cgi_reader, :initialize
17 def initialize(cgi
, options
= {})
19 initialize_without_cgi_reader(cgi
, options
)
23 # Create a new session id.
26 self.class.generate_unique_id
29 # * Don't require 'digest/md5' whenever a new session is started.
31 def initialize(session
, option
={})
32 dir
= option
['tmpdir'] || Dir
::tmpdir
33 prefix
= option
['prefix'] || ''
34 id
= session
.session_id
35 md5
= Digest
::MD5.hexdigest(id
)[0,16]
36 path
= dir
+"/"+prefix
+md5
41 unless session
.new_session
42 raise CGI
::Session::NoSession, "uninitialized session"
46 @p = ::PStore.new(path
)
48 File
.chmod(0600, p
.path
)