Class: Roast::Workflow::SessionManager
- Inherits:
-
Object
- Object
- Roast::Workflow::SessionManager
- Defined in:
- lib/roast/workflow/session_manager.rb
Overview
Manages session creation, timestamping, and directory management
Instance Method Summary collapse
-
#create_new_session(workflow_id) ⇒ Object
Create a new session for a workflow.
-
#ensure_session_directory(workflow_id, session_name, file_path, timestamp: nil) ⇒ Object
Get or create a session directory for the workflow.
-
#find_session_directory(session_name, file_path, timestamp = nil) ⇒ Object
Find a session directory for the workflow.
-
#initialize ⇒ SessionManager
constructor
A new instance of SessionManager.
-
#session_timestamp(workflow_id) ⇒ Object
Get the session timestamp for a workflow.
-
#set_session_timestamp(workflow_id, timestamp) ⇒ Object
Set the session timestamp for a workflow.
Constructor Details
#initialize ⇒ SessionManager
Returns a new instance of SessionManager.
10 11 12 13 |
# File 'lib/roast/workflow/session_manager.rb', line 10 def initialize @session_mutex = Mutex.new @session_timestamps = {} end |
Instance Method Details
#create_new_session(workflow_id) ⇒ Object
Create a new session for a workflow
60 61 62 63 64 |
# File 'lib/roast/workflow/session_manager.rb', line 60 def create_new_session(workflow_id) = Time.now.utc.strftime("%Y%m%d_%H%M%S_%L") @session_timestamps[workflow_id] = end |
#ensure_session_directory(workflow_id, session_name, file_path, timestamp: nil) ⇒ Object
Get or create a session directory for the workflow
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/roast/workflow/session_manager.rb', line 16 def ensure_session_directory(workflow_id, session_name, file_path, timestamp: nil) @session_mutex.synchronize do # Create or get the workflow directory workflow_dir = workflow_directory(session_name, file_path) FileUtils.mkdir_p(workflow_dir) # Ensure .gitignore exists gitignore_path = File.join(workflow_dir, ".gitignore") File.write(gitignore_path, "*") unless File.exist?(gitignore_path) # Get or create session timestamp = || @session_timestamps[workflow_id] || create_new_session(workflow_id) # Create session directory session_dir = File.join(workflow_dir, ) FileUtils.mkdir_p(session_dir) session_dir end end |
#find_session_directory(session_name, file_path, timestamp = nil) ⇒ Object
Find a session directory for the workflow
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/roast/workflow/session_manager.rb', line 37 def find_session_directory(session_name, file_path, = nil) workflow_dir = workflow_directory(session_name, file_path) return unless File.directory?(workflow_dir) if session_dir = File.join(workflow_dir, ) File.directory?(session_dir) ? session_dir : nil else find_latest_session_directory(workflow_dir) end end |
#session_timestamp(workflow_id) ⇒ Object
Get the session timestamp for a workflow
50 51 52 |
# File 'lib/roast/workflow/session_manager.rb', line 50 def (workflow_id) @session_timestamps[workflow_id] end |
#set_session_timestamp(workflow_id, timestamp) ⇒ Object
Set the session timestamp for a workflow
55 56 57 |
# File 'lib/roast/workflow/session_manager.rb', line 55 def (workflow_id, ) @session_timestamps[workflow_id] = end |