Module: FakeEnv

Defined in:
lib/fake_env.rb,
lib/fake_env/version.rb

Constant Summary collapse

VERSION =
'1.0.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.actualObject (readonly)

Returns the value of attribute actual.



6
7
8
# File 'lib/fake_env.rb', line 6

def actual
  @actual
end

.actual_get_methodObject (readonly)

Returns the value of attribute actual_get_method.



6
7
8
# File 'lib/fake_env.rb', line 6

def actual_get_method
  @actual_get_method
end

.actual_set_methodObject (readonly)

Returns the value of attribute actual_set_method.



6
7
8
# File 'lib/fake_env.rb', line 6

def actual_set_method
  @actual_set_method
end

.fakeObject (readonly)

Returns the value of attribute fake.



6
7
8
# File 'lib/fake_env.rb', line 6

def fake
  @fake
end

Class Method Details

.activate!Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/fake_env.rb', line 8

def activate!
  @actual = ENV.clone
  @fake = Hash.new do |fake, key|
    val = @actual[key]

    fake[key] = val ? val : val.clone
  end

  @actual_get_method ||= ENV.method(:[])
  @actual_set_method ||= ENV.method(:[]=)

  class << ENV
    def [](key)
      FakeEnv.fake[key]
    end

    def []=(key, val)
      FakeEnv.fake[key] = val.freeze
    end
  end
end

.deactivate!Object



30
31
32
33
34
35
# File 'lib/fake_env.rb', line 30

def deactivate!
  class << ENV
    define_method(:[], FakeEnv.actual_get_method)
    define_method(:[]=, FakeEnv.actual_set_method)
  end
end

.withinObject



37
38
39
40
41
42
# File 'lib/fake_env.rb', line 37

def within
  activate!
  yield if block_given?
ensure
  deactivate!
end