Arrea.Config (Arrea v1.0.0)

Copy Markdown View Source

Configuración del engine Arrea.

Prioridad de configuración

Arrea como librería (de menor a mayor prioridad)

  1. @default — Valores baseline compilados en este módulo. Siempre presentes.
  2. config :arrea, :engine, [...] en el config.exs del proyecto consumidor — sobreescribe los defaults en tiempo de compilación a través del Application env de OTP.
  3. Arrea.Config.set/2 en tiempo de ejecución — persiste en la sesión actual de la VM mediante Application.put_env. Sobreescribe la config estática.
  4. Opts pasadas directamente a las funciones (execute/2, run/2, etc.) — prioridad máxima. Los llamadores deben comprobar opts antes de recurrir a Config.get/2.

Nota sobre "config propia de Arrea"

Como librería Elixir/OTP, Arrea no puede tener ficheros de config propios que tengan más prioridad que el proyecto consumidor — es el proyecto consumidor quien siempre gana en la jerarquía de Application env. El @default de este módulo es la única configuración "propia" de Arrea, y actúa como baseline.

Arrea como CLI (de menor a mayor prioridad)

  1. @default — Valores baseline del binario.
  2. Application env (si Arrea se usa en contexto mix).
  3. arrea config set KEY VALUE — Config de sesión. Persiste mientras vive el proceso del binario. Usa el mismo mecanismo que Config.set/2.
  4. Args de CLI — Máxima prioridad. Se aplican solo a la invocación actual.

Ejemplo en config.exs

Acepta tanto keyword list como mapa:

# Keyword list (estilo estándar Elixir)
config :arrea, :engine,
  max_workers: 200,
  circuit_breaker_threshold: 10

# Mapa equivalente
config :arrea, :engine, %{max_workers: 200, circuit_breaker_threshold: 10}

Uso en tiempo de ejecución

Arrea.Config.get(:max_workers)        # => 100 (default)
Arrea.Config.set(:max_workers, 50)    # persiste en la sesión actual
Arrea.Config.get(:max_workers)        # => 50

Summary

Functions

Obtiene todos los valores de configuración del engine, fusionando los defaults con los valores del Application env.

Obtiene un valor de configuración del engine.

Establece un valor de configuración en memoria para la sesión actual.

Functions

all()

@spec all() :: map()

Obtiene todos los valores de configuración del engine, fusionando los defaults con los valores del Application env.

El resultado refleja la configuración efectiva actual, incluyendo sobreescrituras de config.exs y cambios aplicados con Config.set/2.

get(key, default \\ nil)

@spec get(atom(), any()) :: any()

Obtiene un valor de configuración del engine.

Resolución (de menor a mayor prioridad):

  1. @default del módulo
  2. Application env (config.exs del consumidor o Config.set/2 en runtime)

Los opts de función tienen prioridad sobre este valor y deben comprobarse primero en el llamador antes de recurrir a Config.get/2.

Ejemplos

iex> Arrea.Config.get(:max_workers)
100

iex> Arrea.Config.get(:nonexistent_key, :fallback)
:fallback

set(key, value)

@spec set(atom(), any()) :: :ok

Establece un valor de configuración en memoria para la sesión actual.

Los cambios persisten mientras viva el proceso de la VM. Para cambios permanentes, usar config.exs del proyecto consumidor.

En el contexto de CLI, equivale a arrea config set — los cambios se mantienen mientras el proceso del binario esté activo, pero no sobreviven a reinicios.

Ejemplos

iex> Arrea.Config.set(:max_workers, 50)
:ok
iex> Arrea.Config.get(:max_workers)
50