Class: Sinclair::ConfigFactory Private
- Inherits:
-
Object
- Object
- Sinclair::ConfigFactory
- Defined in:
- lib/sinclair/config_factory.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Class responsible for configuring the configuration class
Constant Summary collapse
- CONFIG_CLASS_WARNING =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Deprecation warning message
'Config class is expected to be ConfigClass. ' \ "In future releases this will be enforced.\n" \ 'see more on https://github.com/darthjee/sinclair/blob/master/WARNINGS.md#usage-of-custom-config-classes'
Instance Method Summary collapse
-
#add_configs(*args) ⇒ Array<Symbol>
private
Adds possible configurations.
-
#child ⇒ ConfigFactory
private
Returns a new instance of ConfigFactory.
-
#config ⇒ Config, Object
Returns current instance of config.
-
#configure {|ConfigBuilder| ... } ⇒ Object
Set the values in the config.
-
#initialize(config_class: Class.new(Config), config_attributes: []) ⇒ ConfigFactory
constructor
private
A new instance of ConfigFactory.
-
#reset_config ⇒ NilClass
Cleans the current config instance.
Constructor Details
#initialize(config_class: Class.new(Config), config_attributes: []) ⇒ ConfigFactory
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of ConfigFactory.
27 28 29 30 31 32 33 |
# File 'lib/sinclair/config_factory.rb', line 27 def initialize(config_class: Class.new(Config), config_attributes: []) @config_class = config_class @config_attributes = config_attributes.dup return if config_class.is_a?(ConfigClass) warn CONFIG_CLASS_WARNING end |
Instance Method Details
#add_configs(*args) ⇒ Array<Symbol>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
remove class check once only ConfigClass are accepted
Adds possible configurations
It change the configuration class adding methods
and keeps track of those configurations so that
{ConfigBuilder} is able to set those values when invoked
95 96 97 98 99 100 101 102 103 |
# File 'lib/sinclair/config_factory.rb', line 95 def add_configs(*args) builder = if config_class.is_a?(Sinclair::ConfigClass) config_class.add_configs(*args) else Config::MethodsBuilder.build(config_class, *args) end config_attributes.concat(builder.config_names.map(&:to_sym)) end |
#child ⇒ ConfigFactory
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of ConfigFactory
the new instance will have the same config_attributes and for config_class a child of the current config_class
This method is called when initializing Sinclair::Configurable config_factory and the superclass is also configurable
This way, child classes from other Sinclair::Configurable classes will have a config_class that is a child from the original config_class
154 155 156 157 158 159 |
# File 'lib/sinclair/config_factory.rb', line 154 def child self.class.new( config_class: Class.new(config_class), config_attributes: config_attributes ) end |
#config ⇒ Config, Object
Returns current instance of config
the method returns the same instance until reset_config
is called
49 50 51 |
# File 'lib/sinclair/config_factory.rb', line 49 def config @config ||= config_class.new end |
#configure {|ConfigBuilder| ... } ⇒ Object
Set the values in the config
The block given is evaluated by the Sinclair::ConfigBuilder where each method missed will be used to set a variable in the config
136 137 138 |
# File 'lib/sinclair/config_factory.rb', line 136 def configure(&block) config_builder.instance_eval(&block) end |
#reset_config ⇒ NilClass
Cleans the current config instance
After cleaning it, #config will generate a new instance
70 71 72 |
# File 'lib/sinclair/config_factory.rb', line 70 def reset_config @config = nil end |