Class: Kumi::Configuration

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

Overview

Holds the configuration state for the Kumi compiler and runtime. This object is yielded to the user in the ‘Kumi.configure` block.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



31
32
33
34
35
36
37
38
# File 'lib/kumi/configuration.rb', line 31

def initialize
  # Set smart, environment-aware defaults.
  @cache_path = default_cache_path
  @compilation_mode = default_compilation_mode
  @force_recompile = false
  @decimal_coercion_mode = :automatic
  @code_version = nil
end

Instance Attribute Details

#cache_pathObject

The directory where compiled schemas are stored as cached Ruby files. On file-based systems, this is crucial for performance.



12
13
14
# File 'lib/kumi/configuration.rb', line 12

def cache_path
  @cache_path
end

#code_versionObject

A fingerprint of the COMPILER itself, folded into cache keys so that a change to the analyzer/codegen invalidates cached generated code even when the schema (and thus its digest) is unchanged. Without this, editing the compiler and re-running silently reuses stale generated code from ‘cache_path` — a debugging trap. Override (e.g. to the gem version in production) via `Kumi.configure { |c| c.code_version = … }`.



46
47
48
# File 'lib/kumi/configuration.rb', line 46

def code_version
  @code_version ||= compute_code_version
end

#compilation_modeObject

The compilation strategy.

:jit (Just-in-Time): Compiles schemas on-the-fly at boot time if the
  source has changed. Ideal for development.
:aot (Ahead-of-Time): Expects schemas to be precompiled via a build
  task. Raises an error at runtime if a compiled file is missing.
  Ideal for production and test environments.


20
21
22
# File 'lib/kumi/configuration.rb', line 20

def compilation_mode
  @compilation_mode
end

#decimal_coercion_modeObject

Decimal coercion behavior for inputs declared as ‘decimal` type. :automatic (default): Automatically coerce inputs to BigDecimal in Ruby :explicit: User must explicitly call to_decimal() in the schema



29
30
31
# File 'lib/kumi/configuration.rb', line 29

def decimal_coercion_mode
  @decimal_coercion_mode
end

#force_recompileObject

A master switch to bypass the cache and force recompilation on every run. Useful for debugging the compiler itself.



24
25
26
# File 'lib/kumi/configuration.rb', line 24

def force_recompile
  @force_recompile
end