Sha256: a1c27b75115cb145c9012eaf6243091c500fed8b234f67b290f29b8efa2a777c
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
module DirtyPipeline class Transition def Failure(error) railway.switch_to(:undo) throw :fail_transition, error end def Success(changes = nil) case railway.active when "call" railway.switch_to(:finalize) if respond_to?(:finalize) when "finalize" railway.switch_to(:call) end throw :success, changes.to_h end def self.finalize(*args, **kwargs) event, pipeline, *args = args instance = new(event, pipeline.railway, *args, **kwargs) return unless instance.respond_to?(:finalize) instance.finalize(pipeline.subject) end def self.undo(*args, **kwargs) event, pipeline, *args = args instance = new(event, pipeline.railway, *args, **kwargs) return unless instance.respond_to?(:undo) instance.undo(pipeline.subject) end def self.call(*args, **kwargs) event, pipeline, *args = args instance = new(event, pipeline.railway, *args, **kwargs) pipeline.railway[:undo] << event pipeline.railway[:finalize] << event instance.call(pipeline.subject) end attr_reader :event, :railway def initialize(event, railway, *, **) @event = event @railway = railway end def cache(key) event.cache.fetch(key) { event.cache[key] = yield } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dirty_pipeline-0.6.3 | lib/dirty_pipeline/transition.rb |