Module: Kitchen::Configurable::ClassMethods
- Defined in:
- lib/kitchen/configurable.rb
Overview
Class methods which will be mixed in on inclusion of Configurable module.
Instance Method Summary collapse
-
#default_config(attr, value = nil) {|object| ... } ⇒ Object
Sets a sane default value for a configuration attribute.
-
#defaults ⇒ Hash
private
A hash of attribute keys and default values which has been merged with any superclass defaults.
-
#expand_path_for(attr, value = true) {|object| ... } ⇒ Object
Ensures that an attribute which is a path will be fully expanded at the right time.
-
#expanded_paths ⇒ Hash
private
A hash of attribute keys and truthy/falsey values to determine if said attribute needs to be fully file path expanded, which has been merged with any superclass expanded paths.
-
#required_config(attr) {|attr, value, object| ... } ⇒ Object
Ensures that an attribute must have a non-nil, non-empty String value.
-
#super_defaults ⇒ Hash
private
A hash of defaults from the included class' superclass if defined in the superclass, or an empty hash otherwise.
-
#super_expanded_paths ⇒ Hash
private
A hash of expanded paths from the included class' superclass if defined in the superclass, or an empty hash otherwise.
-
#super_validations ⇒ Hash
private
A hash of validations from the included class' superclass if defined in the superclass, or an empty hash otherwise.
-
#validations ⇒ Hash
private
A hash of attribute keys and valudation callable blocks which has been merged with any superclass valudations.
Instance Method Details
#default_config(attr, value = nil) {|object| ... } ⇒ Object
Sets a sane default value for a configuration attribute. These values can be overridden by provided configuration or in a subclass with another default_config declaration.
192 193 194 |
# File 'lib/kitchen/configurable.rb', line 192 def default_config(attr, value = nil, &block) defaults[attr] = block_given? ? block : value end |
#defaults ⇒ Hash
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 hash of attribute keys and default values which has been merged with any superclass defaults.
261 262 263 |
# File 'lib/kitchen/configurable.rb', line 261 def defaults @defaults ||= Hash.new.merge(super_defaults) end |
#expand_path_for(attr, value = true) {|object| ... } ⇒ Object
Ensures that an attribute which is a path will be fully expanded at the right time. This helps make the configuration unambiguous and much easier to debug and diagnose.
Note that the file path expansion is only intended for paths on the local workstation invking the Test Kitchen code.
222 223 224 |
# File 'lib/kitchen/configurable.rb', line 222 def (attr, value = true, &block) [attr] = block_given? ? block : value end |
#expanded_paths ⇒ Hash
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 hash of attribute keys and truthy/falsey values to determine if said attribute needs to be fully file path expanded, which has been merged with any superclass expanded paths.
280 281 282 |
# File 'lib/kitchen/configurable.rb', line 280 def @expanded_paths ||= Hash.new.merge() end |
#required_config(attr) {|attr, value, object| ... } ⇒ Object
Ensures that an attribute must have a non-nil, non-empty String value. The default behavior will be to raise a user error and thereby halting further configuration processing. Good use cases for require_config might be cloud provider credential keys and other similar data.
245 246 247 248 249 250 251 252 253 254 255 256 |
# File 'lib/kitchen/configurable.rb', line 245 def required_config(attr, &block) if !block_given? klass = self block = lambda do |_, value, thing| if value.nil? || value.to_s.empty? attribute = "#{klass}#{thing.instance.to_str}#config[:#{attr}]" raise UserError, "#{attribute} cannot be blank" end end end validations[attr] = block end |
#super_defaults ⇒ Hash
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 hash of defaults from the included class' superclass if defined in the superclass, or an empty hash otherwise.
268 269 270 271 272 273 274 |
# File 'lib/kitchen/configurable.rb', line 268 def super_defaults if superclass.respond_to?(:defaults) superclass.defaults else Hash.new end end |
#super_expanded_paths ⇒ Hash
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 hash of expanded paths from the included class' superclass if defined in the superclass, or an empty hash otherwise.
287 288 289 290 291 292 293 |
# File 'lib/kitchen/configurable.rb', line 287 def if superclass.respond_to?(:expanded_paths) superclass. else Hash.new end end |
#super_validations ⇒ Hash
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 hash of validations from the included class' superclass if defined in the superclass, or an empty hash otherwise.
305 306 307 308 309 310 311 |
# File 'lib/kitchen/configurable.rb', line 305 def super_validations if superclass.respond_to?(:validations) superclass.validations else Hash.new end end |
#validations ⇒ Hash
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 hash of attribute keys and valudation callable blocks which has been merged with any superclass valudations.
298 299 300 |
# File 'lib/kitchen/configurable.rb', line 298 def validations @validations ||= Hash.new.merge(super_validations) end |