Module: Trailblazer::Activity::DSL::Linear::Patch

Defined in:
lib/trailblazer/activity/dsl/linear/helper.rb

Class Method Summary collapse

Class Method Details

.call(activity, path, customization) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/trailblazer/activity/dsl/linear/helper.rb', line 97

def call(activity, path, customization)
  task_id, *path = path


  patch =
    if task_id
      segment_activity = Introspect::Graph(activity).find(task_id).task
      patched_segment_activity = call(segment_activity, path, customization)

      # Replace the patched subprocess.
      -> { step Subprocess(patched_segment_activity), replace: task_id, id: task_id }
    else
      customization # apply the *actual* patch from the Subprocess() call.
    end

  patched_activity = Class.new(activity)
  patched_activity.class_exec(&patch)
  patched_activity
end