Module: Blinkman::Configurable

Defined in:
lib/blinkman/configurable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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

Instance Method Details

#initialize(*arg, &block) ⇒ Object



4
5
6
7
8
9
10
# 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