類別 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