Ruby 2.4

CGI::Session::PStore

class CGI::Session::PStore

Parent:Object

基于PStore的会话存储类。

这建立在库文件pstore.rb提供的顶层PStore类上。会话数据被编组并存储在一个文件中。提供文件锁定和交易服务。

公共类方法

new(session, option={})显示源文件

Create a new CGI::Session::PStore instance

这个构造函数由CGI :: Session在内部使用。用户通常不需要直接调用它。

session是正在为其创建实例的会话。会话ID只能包含字母数字字符; 自动生成的会话ID遵守这个要求。

option是初始化程序的选项的散列。以下选项被认可:

tmpdir

用于存储PStore文件的目录。缺省为Dir.tmpdir(在Unix系统上通常为“/ tmp”)。

prefix

生成此会话的PStore文件的文件名时添加到会话ID的前缀。缺省为空字符串。

如果该会话的PStore文件不存在,则会创建该会话的PStore文件,如果它存在,则会打开该会话。

# File lib/cgi/session/pstore.rb, line 45 def initialize(session, option={}) dir = option['tmpdir'] || Dir::tmpdir prefix = option['prefix'] || '' id = session.session_id require 'digest/md5' md5 = Digest::MD5.hexdigest(id)[0,16] path = dir+"/"+prefix+md5 path.untaint if File::exist?(path) @hash = nil else unless session.new_session raise CGI::Session::NoSession, "uninitialized session" end @hash = {} end @p = ::PStore.new(path) @p.transaction do |p| File.chmod(0600, p.path) end end

公共实例方法

close() 显示源文件

更新并关闭会话的PStore文件。

# File lib/cgi/session/pstore.rb, line 87 def close update end

delete() 显示源文件

关闭并删除会话的PStore文件。

# File lib/cgi/session/pstore.rb, line 92 def delete path = @p.path File::unlink path end

restore() 显示源文件

从会话的PStore文件恢复会话状态。

将会话状态作为散列返回。

# File lib/cgi/session/pstore.rb, line 70 def restore unless @hash @p.transaction do @hash = @p['hash'] || {} end end @hash end

update() 显示源文件

将会话状态保存到会话的PStore文件。

# File lib/cgi/session/pstore.rb, line 80 def update @p.transaction do @p['hash'] = @hash end end