Class: Nenv::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/nenv/environment.rb,
lib/nenv/environment/dumper.rb,
lib/nenv/environment/loader.rb

Direct Known Subclasses

AutoEnvironment

Defined Under Namespace

Classes: AlreadyExistsError, Dumper, Error, Loader, MethodError

Instance Method Summary collapse

Constructor Details

#initialize(namespace = nil) ⇒ Environment

Returns a new instance of Environment.



21
22
23
# File 'lib/nenv/environment.rb', line 21

def initialize(namespace = nil)
  @namespace = (namespace ? namespace.upcase : nil)
end

Instance Method Details

#create_method(meth, &block) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/nenv/environment.rb', line 25

def create_method(meth, &block)
  fail(AlreadyExistsError, meth) if respond_to?(meth)

  (class << self; self; end).send(:define_method, meth) do |*args|
    raw_value = args.first
    env_name = [@namespace, _sanitize(meth)].compact.join('_')

    callback = block
    if args.size == 1
      ENV[env_name] = Dumper.new.dump(raw_value, &callback)
    else
      Loader.new(meth).load(ENV[env_name], &callback)
    end
  end
end