Class: Opto::Resolver
- Inherits:
-
Object
- Object
- Opto::Resolver
- Defined in:
- lib/opto/resolver.rb
Overview
Base for resolvers.
Resolvers are scripts that can retrieve or generate a value for an option. Such resolvers are for example Env, which can try to find the value for the option from an environment variable. An example of generators is RandomString, which can generate random strings of defined length.
Direct Known Subclasses
Opto::Resolvers::Condition, Opto::Resolvers::Default, Opto::Resolvers::Env, Opto::Resolvers::Evaluate, Opto::Resolvers::File, Opto::Resolvers::Interpolate, Opto::Resolvers::RandomNumber, Opto::Resolvers::RandomString, Opto::Resolvers::RandomUuid, Opto::Resolvers::Variable, Opto::Resolvers::Yaml
Instance Attribute Summary collapse
-
#hint ⇒ Object
Returns the value of attribute hint.
-
#option ⇒ Object
Returns the value of attribute option.
Class Method Summary collapse
-
.for(origin) ⇒ Object
Find a resolver using an origin_name definition, such as :env or :file.
- .inherited(where) ⇒ Object
- .origin ⇒ Object
- .resolvers ⇒ Object
Instance Method Summary collapse
-
#initialize(hint = nil, option = nil) ⇒ Opto::Resolver
constructor
Initialize an instance of a resolver.
-
#origin ⇒ Object
The origin “tag” of this resolver, for example: ‘random_string’ or ‘env’.
-
#resolve ⇒ Object
This is a “base” class, you’re supposed to inherit from this in your resolver and define a #resolve method.
Constructor Details
#initialize(hint = nil, option = nil) ⇒ Opto::Resolver
Initialize an instance of a resolver.
43 44 45 46 |
# File 'lib/opto/resolver.rb', line 43 def initialize(hint = nil, option = nil) @hint = hint @option = option end |
Instance Attribute Details
#hint ⇒ Object
Returns the value of attribute hint.
15 16 17 |
# File 'lib/opto/resolver.rb', line 15 def hint @hint end |
#option ⇒ Object
Returns the value of attribute option.
16 17 18 |
# File 'lib/opto/resolver.rb', line 16 def option @option end |
Class Method Details
.for(origin) ⇒ Object
Find a resolver using an origin_name definition, such as :env or :file
21 22 23 24 |
# File 'lib/opto/resolver.rb', line 21 def for(origin) raise NameError, "Unknown resolver: #{origin}" unless resolvers[origin] resolvers[origin] end |
.inherited(where) ⇒ Object
26 27 28 |
# File 'lib/opto/resolver.rb', line 26 def inherited(where) resolvers[where.origin] = where end |
.origin ⇒ Object
34 35 36 |
# File 'lib/opto/resolver.rb', line 34 def origin name.to_s.split('::').last.snakecase.to_sym end |
.resolvers ⇒ Object
30 31 32 |
# File 'lib/opto/resolver.rb', line 30 def resolvers @resolvers ||= {} end |
Instance Method Details
#origin ⇒ Object
The origin “tag” of this resolver, for example: ‘random_string’ or ‘env’
54 55 56 |
# File 'lib/opto/resolver.rb', line 54 def origin self.class.origin end |
#resolve ⇒ Object
This is a “base” class, you’re supposed to inherit from this in your resolver and define a #resolve method.
49 50 51 |
# File 'lib/opto/resolver.rb', line 49 def resolve raise RuntimeError, "#{self.class}.resolve not defined" end |