Sha256: fe43c2a04e93076cc2b2127c640ccd981375408ec622deee12994a63d51b096a

Contents?: true

Size: 1.52 KB

Versions: 2

Compression:

Stored size: 1.52 KB

Contents

module Trailblazer
  # This is DSL-independent code, focusing only on run-time.
  class Activity
    # include Activity::Interface # TODO

    def initialize(schema)
      @schema = schema
    end

    def call(args, **circuit_options)
      @schema[:circuit].(
        args,
        **circuit_options.merge(activity: self)
      )
    end

    # DISCUSS: we could remove this reader in the future
    # and use {Activity.to_h[:config]}.
    def [](*key)
      @schema[:config][*key]
    end

    def to_h
      @schema
    end

    def inspect
      %{#<Trailblazer::Activity:0x#{object_id}>}
    end

    # Canonical entry-point to invoke an {Activity} or Strategy such as {Activity::Railway}
    # with its taskWrap.
    def self.call(activity, ctx)
      TaskWrap.invoke(activity, [ctx, {}])
    end
  end # Activity
end

require "trailblazer/activity/structures"
require "trailblazer/activity/schema"
require "trailblazer/activity/schema/implementation"
require "trailblazer/activity/schema/intermediate"
require "trailblazer/activity/circuit"
require "trailblazer/activity/circuit/task_adapter"
require "trailblazer/activity/config"
require "trailblazer/activity/introspect"
require "trailblazer/activity/task_wrap/pipeline"
require "trailblazer/activity/task_wrap/call_task"
require "trailblazer/activity/task_wrap"
require "trailblazer/activity/task_wrap/runner"
require "trailblazer/activity/task_wrap/extension"
require "trailblazer/activity/adds"
require "trailblazer/activity/deprecate"
require "trailblazer/option"
require "trailblazer/context"


Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
trailblazer-activity-0.15.1 lib/trailblazer/activity.rb
trailblazer-activity-0.15.0 lib/trailblazer/activity.rb