Sha256: a95901d2960d560adcd6aed02f43deea8169dfbb9eb1f8b26898822e49b18c2d

Contents?: true

Size: 1.13 KB

Versions: 24

Compression:

Stored size: 1.13 KB

Contents

module R10K::Settings::Mixin

  def self.included(klass)
    klass.send(:include, InstanceMethods)
    klass.send(:extend, ClassMethods)
  end

  module InstanceMethods

    # @return [R10K::Settings::Container] A settings container for the given instance.
    def settings
      @settings ||= R10K::Settings::Container.new(self.class.settings)
    end
  end

  module ClassMethods

    # Define a setting and optional default on the extending class.
    #
    # @param key [Symbol]
    # @param default [Object]
    #
    # @return [void]
    def def_setting_attr(key, default = nil)
      defaults.add_valid_key(key)
      defaults[key] = default if default
    end

    # A singleton settings container for storing immutable default configuration
    # on the extending class.
    #
    # @return [R10K::Settings::Container]
    def defaults
      @defaults ||= R10K::Settings::Container.new
    end

    # A singleton settings container for storing manual setting configurations
    # on the extending class.
    #
    # @return [R10K::Settings::Container]
    def settings
      @settings ||= R10K::Settings::Container.new(defaults)
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
r10k-1.4.2 lib/r10k/settings/mixin.rb
r10k-1.4.1 lib/r10k/settings/mixin.rb
r10k-1.4.0 lib/r10k/settings/mixin.rb
r10k-1.3.5 lib/r10k/settings/mixin.rb
r10k-1.3.4 lib/r10k/settings/mixin.rb
r10k-1.2.4 lib/r10k/settings/mixin.rb
r10k-1.3.3 lib/r10k/settings/mixin.rb
r10k-1.3.2 lib/r10k/settings/mixin.rb
r10k-1.2.3 lib/r10k/settings/mixin.rb
r10k-1.3.1 lib/r10k/settings/mixin.rb
r10k-1.2.2 lib/r10k/settings/mixin.rb
r10k-1.3.0 lib/r10k/settings/mixin.rb
r10k-1.3.0rc1 lib/r10k/settings/mixin.rb
r10k-1.2.1 lib/r10k/settings/mixin.rb
r10k-1.2.0 lib/r10k/settings/mixin.rb
r10k-1.2.0rc2 lib/r10k/settings/mixin.rb
r10k-1.1.4 lib/r10k/settings/mixin.rb
r10k-1.2.0rc1 lib/r10k/settings/mixin.rb
r10k-1.1.3 lib/r10k/settings/mixin.rb
r10k-1.1.2 lib/r10k/settings/mixin.rb