Class: Spider::Session
- Inherits:
-
Object
show all
- Defined in:
- lib/spiderfw/controller/session.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(sid = nil) ⇒ Session
Returns a new instance of Session.
40
41
42
|
# File 'lib/spiderfw/controller/session.rb', line 40
def initialize(sid=nil)
@sid = sid || generate_sid
end
|
Instance Attribute Details
Returns the value of attribute sid.
8
9
10
|
# File 'lib/spiderfw/controller/session.rb', line 8
def sid
@sid
end
|
Class Method Details
.check_purge ⇒ Object
29
30
31
32
33
34
|
# File 'lib/spiderfw/controller/session.rb', line 29
def self.check_purge
if (!@last_purge || (Time.now - @last_purge) > Spider.conf.get('session.purge_check'))
purge(Spider.conf.get('session.life'))
@last_purge = Time.now
end
end
|
.get(sid = nil) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/spiderfw/controller/session.rb', line 10
def self.get(sid=nil)
klass = nil
case Spider.conf.get('session.store')
when 'db'
when 'memcached'
when 'file'
klass = FileSession
else
klass = MemorySession
end
klass.setup
return klass.new(sid)
end
|
36
37
38
|
# File 'lib/spiderfw/controller/session.rb', line 36
def self.purge
raise RuntimeError, "Unimplemented"
end
|
24
25
26
27
|
# File 'lib/spiderfw/controller/session.rb', line 24
def self.setup
return if @setup
@setup = true
end
|
Instance Method Details
57
58
59
60
|
# File 'lib/spiderfw/controller/session.rb', line 57
def [](key)
restore unless @restored
@data[key]
end
|
#[]=(key, val) ⇒ Object
62
63
64
65
66
67
|
# File 'lib/spiderfw/controller/session.rb', line 62
def []=(key, val)
restore unless @restored
raise "You can't overwrite the :_flash Hash" if key == :_flash
raise "You can't overwrite the :_transient Hash" if key == :_transient
@data[key] = val
end
|
#clear_empty_hashes!(h) ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/spiderfw/controller/session.rb', line 97
def clear_empty_hashes!(h)
h.each do |k, v|
if (v.is_a?(Hash))
if (v.empty?)
h.delete(k)
else
clear_empty_hashes!(v)
end
end
end
end
|
#delete(key = nil) ⇒ Object
44
45
46
47
48
49
50
51
|
# File 'lib/spiderfw/controller/session.rb', line 44
def delete(key=nil)
if key
restore unless @restored
@data.delete(key)
else
self.class.delete(@sid)
end
end
|
87
88
89
90
|
# File 'lib/spiderfw/controller/session.rb', line 87
def flash
restore unless @restored
@data[:_flash] ||= FlashHash.new
end
|
#generate_sid ⇒ Object
53
54
55
|
# File 'lib/spiderfw/controller/session.rb', line 53
def generate_sid
UUIDTools::UUID.random_create.to_s
end
|
70
71
72
73
74
75
76
77
78
|
# File 'lib/spiderfw/controller/session.rb', line 70
def persist
return unless @restored
clear_empty_hashes!(@data)
@data[:_flash].purge if @data[:_flash]
@data[:_transient].purge if @data[:_transient]
self.class[@sid] = @data
end
|
80
81
82
83
84
85
|
# File 'lib/spiderfw/controller/session.rb', line 80
def restore
@data = self.class[@sid] || {}
@data[:_flash].reset if @data[:_flash]
Spider.logger.debug("Session restored: #{@data.inspect}")
@restored = true
end
|
#transient ⇒ Object
92
93
94
95
|
# File 'lib/spiderfw/controller/session.rb', line 92
def transient
restore unless @restored
@data[:_transient] ||= TransientHash.new
end
|