Class: Ace::Assign::Molecules::AssignmentDiscoverer
- Inherits:
-
Object
- Object
- Ace::Assign::Molecules::AssignmentDiscoverer
- Defined in:
- lib/ace/assign/molecules/assignment_discoverer.rb
Overview
Discovers and enriches assignments with computed state.
Combines AssignmentManager (file operations) with QueueScanner (step scanning) to produce AssignmentInfo objects with full state, progress, and current step information.
Instance Method Summary collapse
-
#find_all(include_completed: false) ⇒ Array<Models::AssignmentInfo>
Find all assignments with computed state.
-
#find_by_task(task_ref:, active_only: true) ⇒ Array<Models::AssignmentInfo>
Find assignments by task reference (assignment name).
-
#initialize(cache_base: nil) ⇒ AssignmentDiscoverer
constructor
A new instance of AssignmentDiscoverer.
Constructor Details
#initialize(cache_base: nil) ⇒ AssignmentDiscoverer
Returns a new instance of AssignmentDiscoverer.
13 14 15 16 17 |
# File 'lib/ace/assign/molecules/assignment_discoverer.rb', line 13 def initialize(cache_base: nil) @cache_base = cache_base || Ace::Assign.cache_dir @assignment_manager = AssignmentManager.new(cache_base: @cache_base) @queue_scanner = QueueScanner.new end |
Instance Method Details
#find_all(include_completed: false) ⇒ Array<Models::AssignmentInfo>
Find all assignments with computed state
NOTE: Performance — This loads and enriches every assignment before filtering. Acceptable for typical usage (< 50 assignments). If assignment counts grow large, consider filtering by state at the manager level before enrichment to avoid unnecessary QueueScanner.scan calls on completed assignments.
28 29 30 31 32 |
# File 'lib/ace/assign/molecules/assignment_discoverer.rb', line 28 def find_all(include_completed: false) @assignment_manager.list .map { |a| enrich_assignment(a) } .select { |ai| include_completed || !ai.completed? } end |
#find_by_task(task_ref:, active_only: true) ⇒ Array<Models::AssignmentInfo>
Find assignments by task reference (assignment name)
39 40 41 42 |
# File 'lib/ace/assign/molecules/assignment_discoverer.rb', line 39 def find_by_task(task_ref:, active_only: true) find_all(include_completed: !active_only) .select { |ai| ai.assignment.name == task_ref } end |