module Athena::Config
Overview
Athena's Config component contains common types for configuring components/features, and managing ACF::Parameters
.
See the external documentation for more information.
Defined in:
annotation_configurations.crathena-config.cr
Class Method Summary
-
.config : ACF::Base
Returns the configured
ACF::Base
instance. -
.parameters : ACF::Parameters
Returns the configured
ACF::Parameters
instance.
Macro Summary
-
configuration_annotation(name, *args, &)
Registers a configuration annotation with the provided name.
Class Method Detail
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.
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.
Macro Detail
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.