类 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