Module: Ace::Support

Defined in:
lib/ace/support/config.rb,
lib/ace/support/config/cli.rb,
lib/ace/support/config/errors.rb,
lib/ace/support/config/version.rb,
lib/ace/support/config/models/config.rb,
lib/ace/support/config/atoms/deep_merger.rb,
lib/ace/support/config/atoms/yaml_parser.rb,
lib/ace/support/config/models/cascade_path.rb,
lib/ace/support/config/models/config_group.rb,
lib/ace/support/config/atoms/path_validator.rb,
lib/ace/support/config/molecules/yaml_loader.rb,
lib/ace/support/config/organisms/config_diff.rb,
lib/ace/support/config/atoms/path_rule_matcher.rb,
lib/ace/support/config/models/config_templates.rb,
lib/ace/support/config/molecules/config_finder.rb,
lib/ace/support/config/organisms/config_resolver.rb,
lib/ace/support/config/organisms/config_initializer.rb,
lib/ace/support/config/molecules/file_config_resolver.rb,
lib/ace/support/config/molecules/project_config_scanner.rb,
lib/ace/support/config/organisms/virtual_config_resolver.rb

Overview

Generic configuration cascade management

Provides a reusable configuration cascade system with customizable folder names, supporting project-level, user-level, and gem-level configuration with deep merging and priority-based resolution.

Examples:

Basic usage with defaults

config = Ace::Support::Config.create
config.get("key", "nested")

Custom folder names

config = Ace::Support::Config.create(
  config_dir: ".my-app",
  defaults_dir: ".my-app-defaults"
)

With gem defaults

config = Ace::Support::Config.create(
  gem_path: __dir__,
  defaults_dir: ".ace-defaults"
)

Test mode (skip filesystem searches)

Ace::Support::Config.test_mode = true
config = Ace::Support::Config.create  # Returns empty config immediately

# Or with mock data
Ace::Support::Config.default_mock = { "key" => "value" }
config = Ace::Support::Config.create  # Returns mock config

Defined Under Namespace

Modules: Config