Module: EnvVar

Defined in:
lib/env_var/log.rb,
lib/env_var/env_var.rb,
lib/env_var/controls/variable_name.rb

Defined Under Namespace

Modules: Controls Classes: Log

Constant Summary collapse

Error =
Class.new(StandardError)

Class Method Summary collapse

Class Method Details

.fetch(name) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/env_var/env_var.rb', line 16

def self.fetch(name)
  logger.trace { "Fetching environment variable (Name: #{name.inspect})" }
  value = ENV.fetch(name)
  logger.debug { "Fetched environment variable (Name: #{name.inspect}, Value: #{value.inspect})" }

  value
end

.get(name) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/env_var/env_var.rb', line 8

def self.get(name)
  logger.trace { "Getting environment variable (Name: #{name.inspect})" }
  value = ENV[name]
  logger.debug { "Got environment variable (Name: #{name.inspect}, Value: #{value.inspect})" }

  value
end

.loggerObject



4
5
6
# File 'lib/env_var/env_var.rb', line 4

def self.logger
  Log.get(self)
end

.push(name_or_hash, value = nil, &action) ⇒ Object

Raises:



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/env_var/env_var.rb', line 52

def self.push(name_or_hash, value=nil, &action)
  raise Error, "Push must be invoked with a block" if action.nil?

  values = nil

  if name_or_hash.is_a?(String)
    name = name_or_hash
    values = { name => value }
  else
    values = name_or_hash
  end

  original_values = push_values(values, &action)

  original_values
end

.push_values(hash, &action) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/env_var/env_var.rb', line 69

def self.push_values(hash, &action)
  logger.trace { "Pushing environment variables (#{hash.inspect})" }

  original_values = {}

  hash.each do |name, value|
    original_values[name] = get(name)

    set(name, value)
  end

  begin
    action.call

    logger.debug { "Pushed environment variables (#{hash.inspect})" }

    original_values
  ensure
    original_values.each do |name, original_value|
      set(name, original_value)
    end
  end
end

.set(name, value) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/env_var/env_var.rb', line 24

def self.set(name, value)
  logger.trace { "Setting environment variable (Name: #{name.inspect}, Value: #{value.inspect})" }
  ENV[name] = value
  logger.debug { "Set environment variable (Name: #{name.inspect}, Value: #{value.inspect})" }

  value
end

.unset(name, &action) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/env_var/env_var.rb', line 32

def self.unset(name, &action)
  logger.trace { "Unsetting environment variable (Name: #{name.inspect})" }
  value = ENV.delete(name)
  logger.debug { "Unset environment variable (Name: #{name.inspect}, Value: #{value.inspect})" }

  return value if action.nil?

  begin
    action.call

    value
  ensure
    if value.nil?
      ENV.delete(name)
    else
      set(name, value)
    end
  end
end