类 CGI::Session::PStore

基于 PStore 的会话存储类。

它建立在库文件 pstore.rb 提供的顶级 PStore 类之上。 Session 数据被编组并存储在文件中。提供 File 锁定和事务服务。

公共类方法

new(session, option={}) 点击切换源代码

创建一个新的 CGI::Session::PStore 实例

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

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

option 是初始化程序的选项哈希。识别以下选项

tmpdir

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

prefix

在为该会话的 PStore 文件生成文件名时要添加到会话 ID 的前缀。默认为空字符串。

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

# File lib/cgi/session/pstore.rb, line 46
def initialize(session, option={})
  option = {'suffix'=>''}.update(option)
  path, @hash = session.new_store_file(option)
  @p = ::PStore.new(path)
  @p.transaction do |p|
    File.chmod(0600, p.path)
  end
end

公共实例方法

close() 点击切换源代码

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

# File lib/cgi/session/pstore.rb, line 75
def close
  update
end
delete() 点击切换源代码

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

# File lib/cgi/session/pstore.rb, line 80
def delete
  path = @p.path
  File::unlink path
end
restore() 点击切换源代码

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

以哈希的形式返回会话状态。

# File lib/cgi/session/pstore.rb, line 58
def restore
  unless @hash
    @p.transaction do
      @hash = @p['hash'] || {}
    end
  end
  @hash
end
update() 点击切换源代码

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

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