class Aruba::Platforms::UnixEnvironmentVariables

Abstract environment variables

Constants

UNDEFINED

We need to use this, because `nil` is a valid value as default

Attributes

actions[R]
env[R]

Public Class Methods

new(env = ENV) click to toggle source
# File lib/aruba/platforms/unix_environment_variables.rb, line 60
def initialize(env = ENV)
  @actions = []

  @env = if RUBY_VERSION < '2.0'
           env.to_hash
         else
           env.to_h
         end
end

Public Instance Methods

[](name) click to toggle source

Get value of variable

@param [#to_s] name

The name of the variable
# File lib/aruba/platforms/unix_environment_variables.rb, line 110
def [](name)
  to_h[name.to_s]
end
[]=(name, value) click to toggle source

Set value of variable

@param [#to_s] name

The name of the variable

@param [#to_s] value

The value of the variable
# File lib/aruba/platforms/unix_environment_variables.rb, line 121
def []=(name, value)
  value = value.to_s

  actions << UpdateAction.new(name.to_s => value)

  value
end
append(name, value) click to toggle source

Append value to variable

@param [#to_s] name

The name of the variable

@param [#to_s] value

The value of the variable
# File lib/aruba/platforms/unix_environment_variables.rb, line 136
def append(name, value)
  name  = name.to_s
  value = self[name].to_s + value.to_s

  actions << UpdateAction.new(name => value )

  value
end
clear() click to toggle source

Reset environment

# File lib/aruba/platforms/unix_environment_variables.rb, line 199
def clear
  value = to_h

  actions.clear

  value
end
delete(name) click to toggle source

Delete variable

@param [#to_s] name

The name of the variable
# File lib/aruba/platforms/unix_environment_variables.rb, line 165
def delete(name)
  # Rescue value, before it is deleted
  value = to_h[name.to_s]

  actions << RemoveAction.new(name.to_s)

  value
end
fetch(name, default = UNDEFINED) click to toggle source

Fetch variable from environment

@param [#to_s] name

The name of the variable

@param [Object] default

The default value used, if the variable is not defined
# File lib/aruba/platforms/unix_environment_variables.rb, line 90
def fetch(name, default = UNDEFINED)
  if default == UNDEFINED
    to_h.fetch name.to_s
  else
    to_h.fetch name.to_s, default
  end
end
key?(name) click to toggle source

Check if variable exist

@param [#to_s] name

The name of the variable
# File lib/aruba/platforms/unix_environment_variables.rb, line 102
def key?(name)
  to_h.key? name.to_s
end
method_missing(name, *args, &block) click to toggle source

Pass on checks

Calls superclass method
# File lib/aruba/platforms/unix_environment_variables.rb, line 175
def method_missing(name, *args, &block)
  super unless to_h.respond_to? name

  to_h.send name, *args, &block
end
prepend(name, value) click to toggle source

Prepend value to variable

@param [#to_s] name

The name of the variable

@param [#to_s] value

The value of the variable
# File lib/aruba/platforms/unix_environment_variables.rb, line 152
def prepend(name, value)
  name  = name.to_s
  value = value.to_s + self[name].to_s

  actions << UpdateAction.new(name => value)

  value
end
respond_to_missing?(name, _private) click to toggle source

Check for respond_to

# File lib/aruba/platforms/unix_environment_variables.rb, line 182
def respond_to_missing?(name, _private)
  to_h.respond_to? name
end
to_h() click to toggle source

Convert to hash

@return [Hash]

A new hash from environment
# File lib/aruba/platforms/unix_environment_variables.rb, line 190
def to_h
  if RUBY_VERSION < '2.0'
    Marshal.load(Marshal.dump(prepared_environment.to_hash))
  else
    Marshal.load(Marshal.dump(prepared_environment.to_h))
  end
end
update(other_env) click to toggle source

Update environment with other en

@param [#to_hash, to_h] other_env

Another environment object or hash

@yield

Pass block to env
# File lib/aruba/platforms/unix_environment_variables.rb, line 77
def update(other_env)
  actions << UpdateAction.new(other_env)

  UnixEnvironmentVariables.new(to_h)
end

Private Instance Methods

prepared_environment() click to toggle source
# File lib/aruba/platforms/unix_environment_variables.rb, line 209
def prepared_environment
  if RUBY_VERSION <= '1.9.3'
    actions.inject(ENV.to_hash.merge(env)) { |a, e| e.call(a) }
  else
    actions.each_with_object(ENV.to_hash.merge(env)) { |e, a| a = e.call(a) }
  end
end