class Environment
Represents a service configuration with lazy evaluation and module composition.
Environments store configuration as methods that can be overridden and composed using Ruby modules. They support lazy evaluation through evaluators.
Nested
Definitions
def self.build(...)
Build a new environment using the builder DSL.
Signature
-
parameter
arguments
Array
Arguments passed to Builder.for
-
returns
Environment
A new environment instance.
Implementation
def self.build(...)
Environment.new(Builder.for(...))
end
def initialize(facet = ::Module.new, parent = nil)
Initialize a new environment.
Signature
-
parameter
facet
Module
The facet module containing the configuration methods.
-
parameter
parent
Environment | Nil
The parent environment for inheritance.
Implementation
def initialize(facet = ::Module.new, parent = nil)
unless facet.class == ::Module
raise ArgumentError, "Facet must be a module!"
end
@facet = facet
@parent = parent
end
attr :facet
Signature
-
attribute
Module
The facet module.
attr :parent
Signature
-
attribute
Environment | Nil
The parent environment, if any.
def included(target)
Include this environment's facet into a target module.
Signature
-
parameter
target
Module
The target module to include into.
Implementation
def included(target)
@parent&.included(target)
target.include(@facet)
end
def with(...)
Create a new environment with additional configuration.
Signature
-
parameter
arguments
Array
Arguments passed to Environment.build.
-
returns
Environment
A new environment with this as parent.
Implementation
def with(...)
return self.class.new(Builder.for(...), self)
end
def implements?(interface)
Check if this environment implements a given interface.
Signature
-
parameter
interface
Module
The interface to check.
-
returns
Boolean
True if this environment implements the interface.
Implementation
def implements?(interface)
@facet <= interface
end
def evaluator
Create an evaluator for this environment.
Signature
-
returns
Evaluator
A lazy evaluator for this environment.
Implementation
def evaluator
return Evaluator.wrap(self)
end
def to_h
Convert the environment to a hash.
Signature
-
returns
Hash
A hash representation of the environment.
Implementation
def to_h
evaluator.to_h
end