class Rack::Session::Abstract::SessionHash
SessionHash is responsible to lazily load the session from store.
Public Class Methods
new(by, env)
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 51 def initialize(by, env) super() @by = by @env = env @loaded = false end
Public Instance Methods
[](key)
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 58 def [](key) load_for_read! super(key.to_s) end
[]=(key, value)
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 70 def []=(key, value) load_for_write! super(key.to_s, value) end
clear()
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 75 def clear load_for_write! super end
delete(key)
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 92 def delete(key) load_for_write! super(key.to_s) end
empty?()
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 114 def empty? load_for_read! super end
exists?()
click to toggle source
# File lib/rack/session/abstract/id.rb, line 105 def exists? return @exists if instance_variable_defined?(:@exists) @exists = @by.send(:session_exists?, @env) end
has_key?(key)
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 63 def has_key?(key) load_for_read! super(key.to_s) end
inspect()
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 97 def inspect if loaded? super else "#<#{self.class}:0x#{self.object_id.to_s(16)} not yet loaded>" end end
loaded?()
click to toggle source
# File lib/rack/session/abstract/id.rb, line 110 def loaded? @loaded end
merge!(hash)
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 119 def merge!(hash) load_for_write! super end
to_hash()
click to toggle source
# File lib/rack/session/abstract/id.rb, line 80 def to_hash load_for_read! h = {}.replace(self) h.delete_if { |k,v| v.nil? } h end
update(hash)
click to toggle source
Calls superclass method
# File lib/rack/session/abstract/id.rb, line 87 def update(hash) load_for_write! super(stringify_keys(hash)) end
Private Instance Methods
load!()
click to toggle source
# File lib/rack/session/abstract/id.rb, line 134 def load! id, session = @by.send(:load_session, @env) @env[ENV_SESSION_OPTIONS_KEY][:id] = id replace(stringify_keys(session)) @loaded = true end
load_for_read!()
click to toggle source
# File lib/rack/session/abstract/id.rb, line 126 def load_for_read! load! if !loaded? && exists? end
load_for_write!()
click to toggle source
# File lib/rack/session/abstract/id.rb, line 130 def load_for_write! load! unless loaded? end
stringify_keys(other)
click to toggle source
# File lib/rack/session/abstract/id.rb, line 141 def stringify_keys(other) hash = {} other.each do |key, value| hash[key.to_s] = value end hash end