Class: CMDx::Chain
Overview
Manages a collection of task execution results in a thread-safe manner. Chains provide a way to track related task executions and their outcomes within the same execution context.
Constant Summary collapse
- THREAD_KEY =
:cmdx_chain
Instance Attribute Summary collapse
-
#id ⇒ String
readonly
Returns the unique identifier for this chain.
-
#results ⇒ Array<Result>
readonly
Returns the collection of execution results in this chain.
Class Method Summary collapse
-
.build(result) ⇒ Chain
Builds or extends the current chain by adding a result.
-
.clear ⇒ nil
Clears the current chain for the current thread.
-
.current ⇒ Chain?
Retrieves the current chain for the current thread.
-
.current=(chain) ⇒ Chain
Sets the current chain for the current thread.
Instance Method Summary collapse
-
#initialize ⇒ Chain
constructor
Creates a new chain with a unique identifier and empty results collection.
-
#to_h ⇒ Hash
Converts the chain to a hash representation.
-
#to_s ⇒ String
Converts the chain to a string representation.
Constructor Details
#initialize ⇒ Chain
Creates a new chain with a unique identifier and empty results collection.
42 43 44 45 |
# File 'lib/cmdx/chain.rb', line 42 def initialize @id = Identifier.generate @results = [] end |
Instance Attribute Details
#id ⇒ String (readonly)
Returns the unique identifier for this chain.
22 23 24 |
# File 'lib/cmdx/chain.rb', line 22 def id @id end |
#results ⇒ Array<Result> (readonly)
Returns the collection of execution results in this chain.
32 33 34 |
# File 'lib/cmdx/chain.rb', line 32 def results @results end |
Class Method Details
.build(result) ⇒ Chain
Builds or extends the current chain by adding a result. Creates a new chain if none exists, otherwise appends to the current one.
105 106 107 108 109 110 111 |
# File 'lib/cmdx/chain.rb', line 105 def build(result) raise TypeError, "must be a CMDx::Result" unless result.is_a?(Result) self.current ||= new current.results << result current end |
.clear ⇒ nil
Clears the current chain for the current thread.
86 87 88 |
# File 'lib/cmdx/chain.rb', line 86 def clear Thread.current[THREAD_KEY] = nil end |
.current ⇒ Chain?
Retrieves the current chain for the current thread.
60 61 62 |
# File 'lib/cmdx/chain.rb', line 60 def current Thread.current[THREAD_KEY] end |
.current=(chain) ⇒ Chain
Sets the current chain for the current thread.
74 75 76 |
# File 'lib/cmdx/chain.rb', line 74 def current=(chain) Thread.current[THREAD_KEY] = chain end |
Instance Method Details
#to_h ⇒ Hash
Converts the chain to a hash representation.
128 129 130 131 132 133 |
# File 'lib/cmdx/chain.rb', line 128 def to_h { id: id, results: results.map(&:to_h) } end |