класс CGI::Session::PStore
Класс хранения сессий на основе PStore.
Он расширяет базовый класс PStore, предоставляемый библиотечным файлом pstore.rb. Данные сессии Session сериализуются и хранятся в файле. Предоставляются функции блокировки файла и транзакций.
Публичные методы класса
# 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 Создает новый экземпляр 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.