Sha256: 597ebd7ab47ba520cc1cb7371c97da4c6ddae645dae9002882a8c3d93cd58dc7

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

module Pliny
  module ConfigHelpers
    def optional(*attrs)
      attrs.each do |attr|
        instance_eval "def #{attr}; @#{attr} ||= ENV['#{attr.upcase}'] end", __FILE__, __LINE__
        ConfigHelpers.add_question_method(attr)
      end
    end

    def mandatory(*attrs)
      attrs.each do |attr|
        instance_eval "def #{attr}; @#{attr} ||= ENV['#{attr.upcase}'] || raise('missing=#{attr.upcase}') end", __FILE__, __LINE__
        ConfigHelpers.add_question_method(attr)
      end
    end

    def override(attrs)
      attrs.each do |attr, value|
        instance_eval "def #{attr}; @#{attr} ||= ENV['#{attr.upcase}'] || '#{value}'.to_s end", __FILE__, __LINE__
        ConfigHelpers.add_question_method(attr)
      end
    end

    def self.add_question_method(attr)
      define_method "#{attr}?" do
        return false if send(attr).nil?
        !!(send(attr) =~ /\Atrue|yes|on\z/i || send(attr).to_i > 0)
      end
    end
  end
end

# Supress the "use RbConfig instead" warning.
Object.send :remove_const, :Config

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pliny-0.2.1 lib/pliny/config_helpers.rb
pliny-0.2.0 lib/pliny/config_helpers.rb
pliny-0.1.0 lib/pliny/config_helpers.rb
pliny-0.0.4 lib/pliny/config_helpers.rb