Class: CMDx::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/cmdx/configuration.rb

Overview

Configuration class that manages global settings for CMDx including middlewares, callbacks, coercions, validators, breakpoints, backtraces, and logging.

Constant Summary collapse

DEFAULT_BREAKPOINTS =
%w[failed].freeze
DEFAULT_ROLLPOINTS =
%w[failed].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Initializes a new Configuration instance with default values.

Creates new registry instances for middlewares, callbacks, coercions, and validators. Sets default breakpoints and configures a basic logger.

Examples:

config = Configuration.new
config.middlewares.class # => MiddlewareRegistry
config.task_breakpoints # => ["failed"]


139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/cmdx/configuration.rb', line 139

def initialize
  @middlewares = MiddlewareRegistry.new
  @callbacks = CallbackRegistry.new
  @coercions = CoercionRegistry.new
  @validators = ValidatorRegistry.new

  @task_breakpoints = DEFAULT_BREAKPOINTS
  @workflow_breakpoints = DEFAULT_BREAKPOINTS
  @rollback_on = DEFAULT_ROLLPOINTS

  @backtrace = false
  @backtrace_cleaner = nil
  @exception_handler = nil

  @logger = Logger.new(
    $stdout,
    progname: "cmdx",
    formatter: LogFormatters::Line.new,
    level: Logger::INFO
  )
end

Instance Attribute Details

#backtraceBoolean

Returns whether to log backtraces for failed tasks.

Examples:

config.backtrace = true

Returns:

  • (Boolean)

    true if backtraces should be logged



94
95
96
# File 'lib/cmdx/configuration.rb', line 94

def backtrace
  @backtrace
end

#backtrace_cleanerProc?

Returns the proc used to clean backtraces before logging.

Examples:

config.backtrace_cleaner = ->(bt) { bt.first(5) }

Returns:

  • (Proc, nil)

    The backtrace cleaner proc, or nil if not set



104
105
106
# File 'lib/cmdx/configuration.rb', line 104

def backtrace_cleaner
  @backtrace_cleaner
end

#callbacksCallbackRegistry

Returns the callback registry for task lifecycle hooks.

Examples:

config.callbacks.register(:before_execution, :log_start)

Returns:



33
34
35
# File 'lib/cmdx/configuration.rb', line 33

def callbacks
  @callbacks
end

#coercionsCoercionRegistry

Returns the coercion registry for type conversions.

Examples:

config.coercions.register(:custom, CustomCoercion)

Returns:



43
44
45
# File 'lib/cmdx/configuration.rb', line 43

def coercions
  @coercions
end

#exception_handlerProc?

Returns the proc called when exceptions occur during execution.

Examples:

config.exception_handler = ->(task, error) { Sentry.capture_exception(error) }

Returns:

  • (Proc, nil)

    The exception handler proc, or nil if not set



114
115
116
# File 'lib/cmdx/configuration.rb', line 114

def exception_handler
  @exception_handler
end

#loggerLogger

Returns the logger instance for CMDx operations.

Examples:

config.logger.level = Logger::DEBUG

Returns:

  • (Logger)

    The logger instance



84
85
86
# File 'lib/cmdx/configuration.rb', line 84

def logger
  @logger
end

#middlewaresMiddlewareRegistry

Returns the middleware registry for task execution.

Examples:

config.middlewares.register(CustomMiddleware)

Returns:



23
24
25
# File 'lib/cmdx/configuration.rb', line 23

def middlewares
  @middlewares
end

#rollback_onArray<String>

Returns the statuses that trigger a task execution rollback.

Examples:

config.rollback_on = ["failed", "skipped"]

Returns:

  • (Array<String>)

    Array of status names that trigger rollback



124
125
126
# File 'lib/cmdx/configuration.rb', line 124

def rollback_on
  @rollback_on
end

#task_breakpointsArray<String>

Returns the breakpoint statuses for task execution interruption.

Examples:

config.task_breakpoints = ["failed", "skipped"]

Returns:

  • (Array<String>)

    Array of status names that trigger breakpoints



63
64
65
# File 'lib/cmdx/configuration.rb', line 63

def task_breakpoints
  @task_breakpoints
end

#validatorsValidatorRegistry

Returns the validator registry for attribute validation.

Examples:

config.validators.register(:email, EmailValidator)

Returns:



53
54
55
# File 'lib/cmdx/configuration.rb', line 53

def validators
  @validators
end

#workflow_breakpointsArray<String>

Returns the breakpoint statuses for workflow execution interruption.

Examples:

config.workflow_breakpoints = ["failed", "skipped"]

Returns:

  • (Array<String>)

    Array of status names that trigger breakpoints



74
75
76
# File 'lib/cmdx/configuration.rb', line 74

def workflow_breakpoints
  @workflow_breakpoints
end

Instance Method Details

#to_hHash{Symbol => Object}

Converts the configuration to a hash representation.

Examples:

config = Configuration.new
config.to_h
# => { middlewares: #<MiddlewareRegistry>, callbacks: #<CallbackRegistry>, ... }

Returns:

  • (Hash{Symbol => Object})

    hash containing all configuration values



171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/cmdx/configuration.rb', line 171

def to_h
  {
    middlewares: @middlewares,
    callbacks: @callbacks,
    coercions: @coercions,
    validators: @validators,
    task_breakpoints: @task_breakpoints,
    workflow_breakpoints: @workflow_breakpoints,
    rollback_on: @rollback_on,
    backtrace: @backtrace,
    backtrace_cleaner: @backtrace_cleaner,
    exception_handler: @exception_handler,
    logger: @logger
  }
end