класс CGI::Session::PStore
Класс хранения сессий на основе PStore.
Он основан на верхнем уровне классе PStore, предоставляемом библиотечным файлом pstore.rb. Данные Session сериализуются и хранятся в файле. Предоставляются средства блокировки File и транзакций.
Публичные методы класса
# File lib/cgi/session/pstore.rb, line 46
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
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 Создать новый экземпляр CGI::Session::PStore
Этот конструктор используется внутри CGI::Session. Пользователю обычно не нужно вызывать его напрямую.
session — это сессия, для которой создаётся этот экземпляр. Идентификатор сессии должен содержать только символы латинского алфавита и цифры; автоматически сгенерированные идентификаторы сессий этому требованию соответствуют.
option — это хеш опций для инициализатора. Признаются следующие опции:
- tmpdir
-
директория для хранения файла
PStore. По умолчанию этоDir::tmpdir(обычно “/tmp” в Unix-системах). - prefix
-
префикс, добавляемый к идентификатору сессии при создании имени файла для файла
PStoreэтой сессии. По умолчанию пустая строка.
Файл PStore этой сессии будет создан, если он не существует, или открыт, если существует.
Публичные методы экземпляра
# File lib/cgi/session/pstore.rb, line 87 def close update end
Обновить и закрыть файл PStore сессии.
# File lib/cgi/session/pstore.rb, line 92 def delete path = @p.path File::unlink path end
Закрыть и удалить файл PStore сессии.
# File lib/cgi/session/pstore.rb, line 70
def restore
unless @hash
@p.transaction do
@hash = @p['hash'] || {}
end
end
@hash
end Восстановить состояние сессии из файла PStore сессии.
Возвращает состояние сессии в виде хеша.
# File lib/cgi/session/pstore.rb, line 80
def update
@p.transaction do
@p['hash'] = @hash
end
end Сохранить состояние сессии в файле PStore сессии.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.