Module: Axn::Core

Defined in:
lib/axn/core.rb,
lib/axn/core/flow.rb,
lib/axn/core/hooks.rb,
lib/axn/core/naming.rb,
lib/axn/core/context.rb,
lib/axn/core/logging.rb,
lib/axn/core/tagging.rb,
lib/axn/core/contract.rb,
lib/axn/core/executor.rb,
lib/axn/core/versioning.rb,
lib/axn/core/memoization.rb,
lib/axn/core/default_call.rb,
lib/axn/core/use_strategy.rb,
lib/axn/core/flow/fails_on.rb,
lib/axn/core/flow/handlers.rb,
lib/axn/core/flow/messages.rb,
lib/axn/core/context/facade.rb,
lib/axn/core/flow/callbacks.rb,
lib/axn/core/semantic_hints.rb,
lib/axn/core/ambient_context.rb,
lib/axn/core/field_resolvers.rb,
lib/axn/core/context/internal.rb,
lib/axn/core/method_shadowing.rb,
lib/axn/core/nesting_tracking.rb,
lib/axn/core/tool_declaration.rb,
lib/axn/core/automatic_logging.rb,
lib/axn/core/schema_reflection.rb,
lib/axn/core/contract/redaction.rb,
lib/axn/core/extension_metadata.rb,
lib/axn/core/field_resolvers/model.rb,
lib/axn/core/flow/handlers/invoker.rb,
lib/axn/core/flow/handlers/matcher.rb,
lib/axn/core/contract_for_subfields.rb,
lib/axn/core/flow/handlers/registry.rb,
lib/axn/core/field_resolvers/extract.rb,
lib/axn/core/context/facade_inspector.rb,
lib/axn/core/contract/shape_declaration.rb,
lib/axn/core/flow/handlers/base_descriptor.rb,
lib/axn/core/contract/subfield_contradictions.rb,
lib/axn/core/flow/handlers/resolvers/base_resolver.rb,
lib/axn/core/flow/handlers/resolvers/message_resolver.rb,
lib/axn/core/flow/handlers/resolvers/callback_resolver.rb,
lib/axn/core/flow/handlers/descriptors/message_descriptor.rb,
lib/axn/core/flow/handlers/descriptors/callback_descriptor.rb

Defined Under Namespace

Modules: AmbientContext, AutomaticLogging, ClassMethods, Contract, ContractForSubfields, DefaultCall, ExtensionMetadata, FieldResolvers, Flow, Hooks, Logging, Memoization, MethodShadowing, Naming, NestingTracking, SchemaReflection, SemanticHints, Tagging, ToolDeclaration, UseStrategy, Versioning Classes: ActionAttempt, Context, ContextFacade, ContextFacadeInspector, Executor, InternalContext

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/axn/core.rb', line 64

def self.included(base)
  base.class_eval do
    extend ClassMethods

    # DSL modules that add class methods/attributes users interact with
    include Core::Hooks
    include Core::Naming
    include Core::ToolDeclaration
    include Core::Logging
    include Core::AutomaticLogging
    include Core::Tagging
    include Core::Flow
    include Core::AmbientContext
    include Core::Contract
    include Core::ContractForSubfields
    include Core::UseStrategy
    include Core::Memoization
    include Core::DefaultCall
    include Core::ExtensionMetadata
    include Core::SemanticHints
    include Core::Versioning
    include Core::SchemaReflection

    # Per-class config overrides: gives the action class-level accessors
    # (`<name>` setter/reader, `<name>?`, `<name>_override`) for every
    # `overridable: true` setting on Axn.config. See Axn::Configurable.
    include Axn::Configuration.overrides

    # Internal: tracks nesting depth for logging and duplicate-log suppression
    include Core::NestingTracking

    # Actions are run via the sanctioned entry points (.call / .call!), which build
    # the instance internally. Block direct instantiation so callers can't bypass
    # hooks, validation, and the other guarantees those entry points provide.
    private_class_method :new
  end
end

Instance Method Details

#_runObject

Main entry point for action execution



103
104
105
# File 'lib/axn/core.rb', line 103

def _run
  Axn::Core::Executor.new(self).run
end

#done!(message = nil, standalone: false, **exposures) ⇒ Object



112
113
114
115
# File 'lib/axn/core.rb', line 112

def done!(message = nil, standalone: false, **exposures)
  expose(**exposures) if exposures.any?
  raise Axn::Internal::EarlyCompletion.new(message, standalone:)
end

#fail!(message = nil, standalone: false, **exposures) ⇒ Object

Raises:



107
108
109
110
# File 'lib/axn/core.rb', line 107

def fail!(message = nil, standalone: false, **exposures)
  expose(**exposures) if exposures.any?
  raise Axn::Failure.new(message, standalone:, action: self)
end