class WebConsole::Session
A session lets you persist an Evaluator
instance in memory associated with multiple bindings.
Each newly created session is persisted into memory and you can find it later by its id
.
A session may be associated with multiple bindings. This is used by the error pages only, as currently, this is the only client that needs to do that.
Attributes
An unique identifier for every REPL.
Public Class Methods
Source
# File lib/web_console/session.rb, line 21 def find(id) inmemory_storage[id] end
Finds a persisted session in memory by its id.
Returns a persisted session if found in memory. Raises NotFound error unless found in memory.
Source
# File lib/web_console/session.rb, line 32 def from(storage) if exc = storage[:__web_console_exception] new(ExceptionMapper.follow(exc)) elsif binding = storage[:__web_console_binding] new([[binding]]) end end
Create a Session
from an binding or exception in a storage.
The storage is expected to respond to []. The binding is expected in :__web_console_binding and the exception in :__web_console_exception.
Can return nil, if no binding or exception have been preserved in the storage.
Source
# File lib/web_console/session.rb, line 44 def initialize(exception_mappers) @id = SecureRandom.hex(16) @exception_mappers = exception_mappers @evaluator = Evaluator.new(@current_binding = exception_mappers.first.first) store_into_memory end
Public Instance Methods
Source
# File lib/web_console/session.rb, line 70 def context(objpath) Context.new(@current_binding).extract(objpath) end
Returns context of the current binding
Source
Source
# File lib/web_console/session.rb, line 63 def switch_binding_to(index, exception_object_id) bindings = ExceptionMapper.find_binding(@exception_mappers, exception_object_id) @evaluator = Evaluator.new(@current_binding = bindings[index.to_i]) end
Switches the current binding to the one at specified index
.
Returns nothing.
Private Instance Methods
Source
# File lib/web_console/session.rb, line 76 def store_into_memory inmemory_storage[id] = self end