Spec-Zone.ru › Ruby 2.5

класс CGI::Session::PStore

Родитель:
Объект

Класс хранения сессий на основе PStore.

Он расширяет базовый класс PStore, предоставляемый библиотечным файлом pstore.rb. Данные сессии Session сериализуются и хранятся в файле. Предоставляются функции блокировки файла и транзакций.

Публичные методы класса

new(session, option={}) Показать исходный код
# 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 для этой сессии будет создан, если он не существует, или открыт, если существует.

Публичные методы экземпляра

close() Показать исходный код
# File lib/cgi/session/pstore.rb, line 87
def close
  update
end

Обновляет и закрывает файл PStore сессии.

delete() Показать исходный код
# File lib/cgi/session/pstore.rb, line 92
def delete
  path = @p.path
  File::unlink path
end

Закрывает и удаляет файл PStore сессии.

restore() Показать исходный код
# File lib/cgi/session/pstore.rb, line 70
def restore
  unless @hash
    @p.transaction do
      @hash = @p['hash'] || {}
    end
  end
  @hash
end

Восстанавливает состояние сессии из файла PStore сессии.

Возвращает состояние сессии в виде хеша.

update() Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API