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.
-
#deprecate_config_for(attr, value = nil) {|object| ... } ⇒ Object
Set the appropriate deprecation message for a given attribute name.
-
#deprecated_attributes ⇒ Hash
private
A hash of attribute keys and deprecation messages which has been merged with any superclass deprecations.
-
#diagnose ⇒ Hash
Returns a Hash of configuration and other useful diagnostic information.
-
#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.
-
#plugin_version(version) ⇒ Object
Sets the loaded version of this plugin, usually corresponding to the RubyGems version of the plugin's library.
-
#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_deprecated_attributes ⇒ Hash
private
A hash of deprecated attributes from the superclass, or an empty hash when the superclass has none.
-
#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 validation callable blocks which has been merged with any superclass validations.
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.
473 474 475 |
# File 'lib/kitchen/configurable.rb', line 473 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.
562 563 564 |
# File 'lib/kitchen/configurable.rb', line 562 def defaults @defaults ||= {}.merge(super_defaults) end |
#deprecate_config_for(attr, value = nil) {|object| ... } ⇒ Object
Set the appropriate deprecation message for a given attribute name
523 524 525 |
# File 'lib/kitchen/configurable.rb', line 523 def deprecate_config_for(attr, value = nil, &block) deprecated_attributes[attr] = block_given? ? block : value end |
#deprecated_attributes ⇒ 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 deprecation messages which has been merged with any superclass deprecations.
599 600 601 |
# File 'lib/kitchen/configurable.rb', line 599 def deprecated_attributes @deprecated_attributes ||= {}.merge(super_deprecated_attributes) end |
#diagnose ⇒ Hash
Returns a Hash of configuration and other useful diagnostic information.
443 444 445 446 447 448 449 |
# File 'lib/kitchen/configurable.rb', line 443 def diagnose { class: name, version: @plugin_version ||= nil, api_version: @api_version ||= nil, } 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 invoking the Test Kitchen code.
503 504 505 |
# File 'lib/kitchen/configurable.rb', line 503 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.
581 582 583 |
# File 'lib/kitchen/configurable.rb', line 581 def @expanded_paths ||= {}.merge() end |
#plugin_version(version) ⇒ Object
Sets the loaded version of this plugin, usually corresponding to the
RubyGems version of the plugin's library. If the plugin does not set
this value, then nil will be used and reported.
435 436 437 |
# File 'lib/kitchen/configurable.rb', line 435 def plugin_version(version) # rubocop:disable Style/TrivialAccessors @plugin_version = version 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.
546 547 548 549 550 551 552 553 554 555 556 557 |
# File 'lib/kitchen/configurable.rb', line 546 def required_config(attr, &block) unless 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.
569 570 571 572 573 574 575 |
# File 'lib/kitchen/configurable.rb', line 569 def super_defaults if superclass.respond_to?(:defaults) superclass.defaults else {} end end |
#super_deprecated_attributes ⇒ 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 deprecated attributes from the superclass, or an empty hash when the superclass has none.
606 607 608 609 610 611 612 |
# File 'lib/kitchen/configurable.rb', line 606 def super_deprecated_attributes if superclass.respond_to?(:deprecated_attributes) superclass.deprecated_attributes else {} 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.
588 589 590 591 592 593 594 |
# File 'lib/kitchen/configurable.rb', line 588 def if superclass.respond_to?(:expanded_paths) superclass. else {} 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.
624 625 626 627 628 629 630 |
# File 'lib/kitchen/configurable.rb', line 624 def super_validations if superclass.respond_to?(:validations) superclass.validations else {} 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 validation callable blocks which has been merged with any superclass validations.
617 618 619 |
# File 'lib/kitchen/configurable.rb', line 617 def validations @validations ||= {}.merge(super_validations) end |