Class: Kaal::Config::FileLoader
- Inherits:
-
Object
- Object
- Kaal::Config::FileLoader
- Defined in:
- lib/kaal/config/file_loader.rb
Overview
Loads Kaal runtime configuration from config/kaal.yml and KAAL_* env vars.
Defined Under Namespace
Classes: EnvValue
Constant Summary collapse
- ENV_KEY_MAP =
{ 'KAAL_BACKEND' => :backend, 'KAAL_NAMESPACE' => :namespace, 'KAAL_TICK_INTERVAL' => :tick_interval, 'KAAL_WINDOW_LOOKBACK' => :window_lookback, 'KAAL_WINDOW_LOOKAHEAD' => :window_lookahead, 'KAAL_LEASE_TTL' => :lease_ttl, 'KAAL_SCHEDULER_CONFIG_PATH' => :scheduler_config_path, 'KAAL_ENABLE_LOG_DISPATCH_REGISTRY' => :enable_log_dispatch_registry, 'KAAL_ENABLE_DISPATCH_RECOVERY' => :enable_dispatch_recovery, 'KAAL_RECOVERY_WINDOW' => :recovery_window, 'KAAL_RECOVERY_STARTUP_JITTER' => :recovery_startup_jitter, 'KAAL_TIME_ZONE' => :time_zone, 'KAAL_SCHEDULER_CONFLICT_POLICY' => :scheduler_conflict_policy, 'KAAL_SCHEDULER_MISSING_FILE_POLICY' => :scheduler_missing_file_policy, 'KAAL_DELAYED_JOB_ALLOWED_CLASS_PREFIXES' => :delayed_job_allowed_class_prefixes }.freeze
- CONFIG_KEY_TO_ENV_KEY =
ENV_KEY_MAP.invert.freeze
- CONFIGURATION_ASSIGNERS =
{ namespace: ->(config, value) { config.namespace = value }, tick_interval: ->(config, value) { config.tick_interval = value }, window_lookback: ->(config, value) { config.window_lookback = value }, window_lookahead: ->(config, value) { config.window_lookahead = value }, lease_ttl: ->(config, value) { config.lease_ttl = value }, scheduler_config_path: ->(config, value) { config.scheduler_config_path = value }, enable_log_dispatch_registry: ->(config, value) { config.enable_log_dispatch_registry = value }, enable_dispatch_recovery: ->(config, value) { config.enable_dispatch_recovery = value }, recovery_window: ->(config, value) { config.recovery_window = value }, recovery_startup_jitter: ->(config, value) { config.recovery_startup_jitter = value }, time_zone: ->(config, value) { config.time_zone = value }, scheduler_conflict_policy: ->(config, value) { config.scheduler_conflict_policy = value }, scheduler_missing_file_policy: ->(config, value) { config.scheduler_missing_file_policy = value }, delayed_job_allowed_class_prefixes: ->(config, value) { config.delayed_job_allowed_class_prefixes = value }, logger: ->(config, value) { config.logger = value } }.freeze
Instance Method Summary collapse
-
#initialize(configuration:, runtime_context:, env: ENV) ⇒ FileLoader
constructor
A new instance of FileLoader.
- #load(path: 'config/kaal.yml') ⇒ Object
Constructor Details
#initialize(configuration:, runtime_context:, env: ENV) ⇒ FileLoader
Returns a new instance of FileLoader.
88 89 90 91 92 93 |
# File 'lib/kaal/config/file_loader.rb', line 88 def initialize(configuration:, runtime_context:, env: ENV) @configuration = configuration @runtime_context = runtime_context @env = env @config_key_to_env_key = CONFIG_KEY_TO_ENV_KEY end |
Instance Method Details
#load(path: 'config/kaal.yml') ⇒ Object
95 96 97 98 99 100 101 102 103 |
# File 'lib/kaal/config/file_loader.rb', line 95 def load(path: 'config/kaal.yml') absolute_path = @runtime_context.resolve_path(path) payload = File.exist?(absolute_path) ? parse_yaml(absolute_path) : {} merged = merge_environment_config(payload) merged = apply_env_overrides(merged) apply_configuration(merged) @configuration.validate! @configuration end |