Class: Pipeline::Stage::Base
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Pipeline::Stage::Base
- Defined in:
- lib/pipeline/stage/base.rb
Constant Summary collapse
- @@chain =
[]
Class Method Summary collapse
Instance Method Summary collapse
- #after_initialize ⇒ Object
- #completed? ⇒ Boolean
- #perform ⇒ Object
-
#run ⇒ Object
Subclass must implement this as part of the contract.
Class Method Details
.>>(next_stage) ⇒ Object
17 18 19 20 |
# File 'lib/pipeline/stage/base.rb', line 17 def self.>>(next_stage) @@chain << self next_stage end |
.build_chain ⇒ Object
22 23 24 25 26 |
# File 'lib/pipeline/stage/base.rb', line 22 def self.build_chain chain = @@chain + [self] @@chain = [] chain end |
Instance Method Details
#after_initialize ⇒ Object
30 31 32 33 |
# File 'lib/pipeline/stage/base.rb', line 30 def after_initialize self.name ||= (default_name || self.class).to_s self[:status] = :not_started if new_record? end |
#completed? ⇒ Boolean
35 36 37 |
# File 'lib/pipeline/stage/base.rb', line 35 def completed? status == :completed end |
#perform ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/pipeline/stage/base.rb', line 39 def perform raise InvalidStatusError.new(status) unless [:not_started, :failed].include?(status) begin _setup run self.status = :completed rescue => e logger.info("Error on stage #{default_name}: #{e.message}") logger.info(e.backtrace.join("\n")) self. = e. self.status = :failed raise e end end |
#run ⇒ Object
Subclass must implement this as part of the contract
55 |
# File 'lib/pipeline/stage/base.rb', line 55 def run; end |