Sha256: 8bbff8c732288155f839e763e5b94dea6ecb9b58e6f68eeceb51f05a850edbb3

Contents?: true

Size: 896 Bytes

Versions: 2

Compression:

Stored size: 896 Bytes

Contents

# frozen_string_literal: true

module CronKubernetes
  # Provides configuration settings, with default values, for the gem.
  module Configurable
    def configuration
      yield self
    end

    # Define a configuration setting and its default value.
    #
    # name:    The name of the setting.
    # default: A default value for the setting. (Optional)
    # rubocop: disable Style/ClassVars
    def define_setting(name, default = nil)
      class_variable_set("@@#{name}", default)

      define_class_method "#{name}=" do |value|
        class_variable_set("@@#{name}", value)
      end

      define_class_method name do
        class_variable_get("@@#{name}")
      end
    end
    # rubocop: enable Style/ClassVars

    private

    def define_class_method(name, &block)
      (class << self; self; end).instance_eval do
        define_method(name, &block)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cron-kubernetes-3.0.0 lib/cron_kubernetes/configurable.rb
cron-kubernetes-2.0.0 lib/cron_kubernetes/configurable.rb