Async::ServiceSourceAsyncServiceEnvironment

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