Class: Clomp::Operation
- Inherits:
-
Object
- Object
- Clomp::Operation
- Defined in:
- lib/clomp/operation.rb
Class Attribute Summary collapse
-
.configs ⇒ Object
To store and read all the tracks!.
-
.track_builders ⇒ Object
To store and read all the tracks!.
Instance Attribute Summary collapse
-
#configs ⇒ Object
readonly
Returns the value of attribute configs.
-
#executed ⇒ Object
readonly
Returns the value of attribute executed.
-
#output ⇒ Object
readonly
Returns the value of attribute output.
-
#result ⇒ Object
readonly
Returns the value of attribute result.
Class Method Summary collapse
- .call(mutable_data = {}, immutable_data = {}) ⇒ Object (also: [])
-
.failure(track_name, track_options: {}, &block) ⇒ Object
get the track name for the failure case!.
-
.finally(track_name, track_options: {}, &block) ⇒ Object
get the track name for the final step! Only one step will be executed!.
- .method_missing(symbol, *args) ⇒ Object
-
.setup {|config| ... } ⇒ Configuration
(also: setup_configuration, configuration)
Operation wise configuration to control state All operation may not require fail fast All operation may not require pass fast Operation wise optional value could be different.
-
.share(track_name, from:, track_options: {}, &block) ⇒ Object
Share track from other operation.
-
.track(track_name, track_options: {}, &block) ⇒ Object
(also: set)
get track name and options!.
Instance Method Summary collapse
-
#exec_steps! ⇒ Object
Execute all the steps! Execute all the tracks!.
- #executed_steps ⇒ Object
- #executed_tracks ⇒ Object
- #failed ⇒ Object
-
#get_status ⇒ Object
collect track status.
-
#initialize(track_builders: [], options: {}, exec: true) ⇒ self
constructor
Constructor for operation object.
-
#steps ⇒ Object
Name of the steps defined in the operation class.
- #successful ⇒ Object
Constructor Details
#initialize(track_builders: [], options: {}, exec: true) ⇒ self
Constructor for operation object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/clomp/operation.rb', line 10 def initialize(track_builders: [], options: {}, exec: true) = {} [:params] = [:params] .merge!([:immutable_data]) if [:immutable_data] # Setup result object! @result = Result.new( operation: self, tracks: track_builders || [], options: || {} ) @executed = [] @configs = self.class.setup_configuration @output = get_status exec_steps! if exec end |
Class Attribute Details
.configs ⇒ Object
To store and read all the tracks!
62 63 64 |
# File 'lib/clomp/operation.rb', line 62 def configs @configs end |
.track_builders ⇒ Object
To store and read all the tracks!
62 63 64 |
# File 'lib/clomp/operation.rb', line 62 def track_builders @track_builders end |
Instance Attribute Details
#configs ⇒ Object (readonly)
Returns the value of attribute configs.
3 4 5 |
# File 'lib/clomp/operation.rb', line 3 def configs @configs end |
#executed ⇒ Object (readonly)
Returns the value of attribute executed.
3 4 5 |
# File 'lib/clomp/operation.rb', line 3 def executed @executed end |
#output ⇒ Object (readonly)
Returns the value of attribute output.
3 4 5 |
# File 'lib/clomp/operation.rb', line 3 def output @output end |
#result ⇒ Object (readonly)
Returns the value of attribute result.
3 4 5 |
# File 'lib/clomp/operation.rb', line 3 def result @result end |
Class Method Details
.call(mutable_data = {}, immutable_data = {}) ⇒ Object Also known as: []
125 126 127 128 129 130 131 132 133 |
# File 'lib/clomp/operation.rb', line 125 def call(mutable_data = {}, immutable_data = {}) new( track_builders: @track_builders, options: { params: mutable_data || {}, immutable_data: immutable_data || {} }, ).result end |
.failure(track_name, track_options: {}, &block) ⇒ Object
get the track name for the failure case!
112 113 114 115 116 |
# File 'lib/clomp/operation.rb', line 112 def failure(track_name, track_options: {}, &block) @track_builders ||= [] @track_builders << build_track(track_name, , :failed_track, track_for: nil, &block) end |
.finally(track_name, track_options: {}, &block) ⇒ Object
get the track name for the final step! Only one step will be executed!
119 120 121 122 123 |
# File 'lib/clomp/operation.rb', line 119 def finally(track_name, track_options: {}, &block) @track_builders ||= [] @track_builders << build_track(track_name, , :finally, track_for: nil, &block) end |
.method_missing(symbol, *args) ⇒ Object
103 104 105 106 107 108 109 |
# File 'lib/clomp/operation.rb', line 103 def method_missing(symbol, *args) if self.configuration.custom_step_names.include?(symbol) track(args) else super end end |
.setup {|config| ... } ⇒ Configuration Also known as: setup_configuration, configuration
Operation wise configuration to control state All operation may not require fail fast All operation may not require pass fast Operation wise optional value could be different
72 73 74 75 76 77 78 |
# File 'lib/clomp/operation.rb', line 72 def setup @configs ||= Configuration.config yield(@configs) if block_given? @configs end |
.share(track_name, from:, track_options: {}, &block) ⇒ Object
Share track from other operation
84 85 86 87 88 89 90 91 92 |
# File 'lib/clomp/operation.rb', line 84 def share(track_name, from:, track_options: {}, &block) @track_builders ||= [] _callable_class = from && from.kind_of?(String) ? Object.const_get(from) : from raise UnknownOperation, 'Please provide a valid operation to share the steps for' unless _callable_class @track_builders << build_track(track_name, , :track, track_for: _callable_class, &block) end |
.track(track_name, track_options: {}, &block) ⇒ Object Also known as: set
get track name and options!
95 96 97 98 99 |
# File 'lib/clomp/operation.rb', line 95 def track(track_name, track_options: {}, &block) @track_builders ||= [] @track_builders << build_track(track_name, , :track, track_for: nil, &block) end |
Instance Method Details
#exec_steps! ⇒ Object
Execute all the steps! Execute all the tracks!
33 34 35 |
# File 'lib/clomp/operation.rb', line 33 def exec_steps! Executor[result, , _self: self] end |
#executed_steps ⇒ Object
37 38 39 |
# File 'lib/clomp/operation.rb', line 37 def executed_steps @result['tracks'].collect {|track| track.name if track.success?}.compact end |
#executed_tracks ⇒ Object
28 29 30 |
# File 'lib/clomp/operation.rb', line 28 def executed_tracks @executed.collect {|executed_track| [executed_track.name, executed_track.type, executed_track.state].join(":") }.join(" --> ") end |
#failed ⇒ Object
46 47 48 |
# File 'lib/clomp/operation.rb', line 46 def failed get_status == 'Failure' end |
#get_status ⇒ Object
collect track status
42 43 44 |
# File 'lib/clomp/operation.rb', line 42 def get_status @result['tracks'].collect {|track| track.name if track.failure?}.compact.count.zero? ? 'Success' : 'Failure' end |
#steps ⇒ Object
Name of the steps defined in the operation class
55 56 57 |
# File 'lib/clomp/operation.rb', line 55 def steps @result['tracks'].collect {|track| track.name} end |
#successful ⇒ Object
50 51 52 |
# File 'lib/clomp/operation.rb', line 50 def successful get_status == 'Success' end |