Class: Async::Service::Environment::Builder
- Inherits:
-
BasicObject
- Defined in:
- lib/async/service/environment.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(facet = ::Module.new) ⇒ Builder
Returns a new instance of Builder.
32
33
34
|
# File 'lib/async/service/environment.rb', line 32
def initialize(facet = ::Module.new)
@facet = facet
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, argument = nil, &block) ⇒ Object
46
47
48
49
50
51
52
|
# File 'lib/async/service/environment.rb', line 46
def method_missing(name, argument = nil, &block)
if block
@facet.define_method(name, &block)
else
@facet.define_method(name){argument}
end
end
|
Class Method Details
.for(*facets, **values, &block) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/async/service/environment.rb', line 10
def self.for(*facets, **values, &block)
top = ::Module.new
builder = self.new(top)
facets.each do |facet|
builder.include(facet)
end
values.each do |key, value|
if value.is_a?(::Proc)
builder.method_missing(key, &value)
else
builder.method_missing(key, value)
end
end
builder.instance_exec(&block) if block_given?
return top
end
|
Instance Method Details
#include(target) ⇒ Object
36
37
38
39
40
41
42
43
44
|
# File 'lib/async/service/environment.rb', line 36
def include(target)
if target.class == ::Module
@facet.include(target)
elsif target.respond_to?(:included)
target.included(@facet)
else
::Kernel.raise ::ArgumentError, "Cannot include #{target.inspect} into #{@facet.inspect}!"
end
end
|