Skip to content

Config

alias ACF

Convenience alias to make referencing Athena::Config types easier.

Alias definition

Athena::Config

module Athena

A web framework comprised of reusable, independent components.

See Athena Framework on Github.

Constants

ENV_NAME = "ATHENA_ENV"

The name of the environment variable used to determine Athena's current environment.

Class methods

.environment : String

Returns the current environment Athena is in based on ENV_NAME. Defaults to development if not defined.

module Athena::Config

Athena's Config component contains common types for configuring components/features, and managing ACF::Parameters.

See the external documentation for more information.

Class methods

.config

Returns the configured ACF::Base instance. The instance is a lazily initialized singleton.

ACF.load_configuration may be redefined to change how the configuration object is provided; e.g. create it from a YAML or JSON configuration file. See the external documentation for more information.

.parameters

Returns the configured ACF::Parameters instance. The instance is a lazily initialized singleton.

ACF.load_parameters may be redefined to change how the parameters object is provided; e.g. create it from a YAML or JSON configuration file. See the external documentation for more information.

Macros

configuration_annotation

Registers a configuration annotation with the provided name. Defines a configuration record with the provided args, if any, that represents the possible arguments that the annotation accepts. May also be used with a block to add custom methods to the configuration record.

Example
# Defines an annotation without any arguments.
ACF.configuration_annotation Secure

# Defines annotation with a required and optional argument.
# The default value will be used if that key isn't supplied in the annotation.
ACF.configuration_annotation SomeAnn, id : Int32, debug : Bool = true

# A block can be used to define custom methods on the configuration object.
ACF.configuration_annotation CustomAnn, first_name : String, last_name : String do
  def name : String
    "#{@first_name} #{@last_name}"
  end
end

NOTE: The logic to actually do the resolution of the annotations must be handled in the owning shard. Athena::Config only defines the common logic that each implementation can use. See ACF::AnnotationConfigurations for more information.