module Blinkman::Configurable

Public Class Methods

included(klass) click to toggle source
# File lib/blinkman/configurable.rb, line 13
def included(klass)
  klass.send(:class_variable_set, :@@configured_keys, [])

  class << klass
    def configure(key, opts = {})
      opts = { optional: false }.merge(opts)

      if ! opts[:optional]
        keys = send(:class_variable_get, :@@configured_keys)
        keys << key
        send(:class_variable_set, :@@configured_keys, keys)
      end

      define_method(key.downcase) do
        ENV[__method__.to_s.upcase]
      end
    end
  end
end
new(*arg, &block) click to toggle source
Calls superclass method
# File lib/blinkman/configurable.rb, line 4
def initialize(*arg, &block)
  self.class.class_variable_get(:@@configured_keys).each do |key|
    upcased_key = key.upcase
    raise RuntimeError.new("key #{upcased_key} in ENV required") unless ENV.has_key?(upcased_key)
  end
  super(*arg, &block)
end