class AnyCable::Rails::Connections::SessionProxy
in the RPC call (set by the previous calls)
Wrap ‘request.session` to lazily load values provided
def initialize(rack_session, socket_session)
def initialize(rack_session, socket_session) @rack_session = rack_session @socket_session = JSON.parse(socket_session).with_indifferent_access end
def instance_variable_get(name)
def instance_variable_get(name) super || rack_session.instance_variable_get(name) end
def keys
def keys rack_session.keys + socket_session.keys end
def method_missing(method, *args, &block)
def method_missing(method, *args, &block) if rack_session.respond_to?(method, true) rack_session.send(method, *args, &block) else super end end
def respond_to_missing?(name, include_private = false)
def respond_to_missing?(name, include_private = false) return false if name == :marshal_dump || name == :_dump rack_session.respond_to?(name, include_private) || super end
def restore!
def restore! socket_session.keys.each(&method(:restore_key!)) end
def restore_key!(key)
def restore_key!(key) return unless socket_session.key?(key) val = socket_session.delete(key) rack_session[key] = if val.is_a?(String) GlobalID::Locator.locate(val) || val else val end end