Class: PHPSession

Inherits:
Object
  • Object
show all
Defined in:
lib/php_session.rb,
lib/php_session/decoder.rb,
lib/php_session/encoder.rb,
lib/php_session/version.rb,
lib/php_session/store_engine/file.rb

Defined Under Namespace

Modules: StoreEngine Classes: Decoder, Encoder, Errors

Constant Summary collapse

VERSION =
"0.4.0"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(option = {}) ⇒ PHPSession

Returns a new instance of PHPSession.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/php_session.rb', line 23

def initialize(option = {})
  default_option = {
    :store_engine => :file,

    :internal_encoding => Encoding.default_internal,
    :external_encoding => Encoding.default_external,
    :encoding_option => {},
  }
  @option = default_option.merge(option)

  store_engine_class = self.class.store_engine_class_of(@option[:store_engine])

  @store_engine = store_engine_class.new(@option)
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



9
10
11
# File 'lib/php_session.rb', line 9

def data
  @data
end

Class Method Details

.register_store_engine(engine_name, klass) ⇒ Object



11
12
13
14
# File 'lib/php_session.rb', line 11

def self.register_store_engine(engine_name, klass)
  @engines ||= {}
  @engines[engine_name] = klass
end

.store_engine_class_of(engine_name) ⇒ Object

Raises:



16
17
18
19
20
21
# File 'lib/php_session.rb', line 16

def self.store_engine_class_of(engine_name)
  store_engine = @engines[engine_name]
  raise PHPSession::Errors, "unknown sotre engine: #{engine_name}" unless store_engine

  store_engine
end

Instance Method Details

#destroy(session_id) ⇒ Object



43
44
45
# File 'lib/php_session.rb', line 43

def destroy(session_id)
  @store_engine.destroy(session_id)
end

#load(session_id) ⇒ Object



38
39
40
41
# File 'lib/php_session.rb', line 38

def load(session_id)
  serialized_session = @store_engine.load(session_id)
  Decoder.decode(serialized_session, @option[:internal_encoding], @option[:encoding_option]) || {}
end

#save(session_id, data) ⇒ Object



47
48
49
50
# File 'lib/php_session.rb', line 47

def save(session_id, data)
  serialized_session = Encoder.encode(data, @option[:external_encoding], @option[:encoding_option])
  @store_engine.save(session_id, serialized_session)
end