Class: Cutlass::EnvDiff

Inherits:
Object
  • Object
show all
Defined in:
lib/cutlass/env_diff.rb

Overview

Diffs the environment

diff = EnvDiff.new

diff.changed? # => false

ENV["LOL"] = "rofl"

diff.changed? # => true

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(before_env: ENV.to_h.dup, skip_keys: [], env: ENV) ⇒ EnvDiff

Returns a new instance of EnvDiff.



16
17
18
19
20
# File 'lib/cutlass/env_diff.rb', line 16

def initialize(before_env: ENV.to_h.dup, skip_keys: [], env: ENV)
  @env = env
  @before_env = before_env.freeze
  @skip_keys = skip_keys
end

Instance Attribute Details

#before_envObject (readonly)

Returns the value of attribute before_env.



14
15
16
# File 'lib/cutlass/env_diff.rb', line 14

def before_env
  @before_env
end

#envObject (readonly)

Returns the value of attribute env.



14
15
16
# File 'lib/cutlass/env_diff.rb', line 14

def env
  @env
end

#skip_keysObject (readonly)

Returns the value of attribute skip_keys.



14
15
16
# File 'lib/cutlass/env_diff.rb', line 14

def skip_keys
  @skip_keys
end

Instance Method Details

#changed?Boolean

Returns:



34
35
36
37
38
# File 'lib/cutlass/env_diff.rb', line 34

def changed?
  env_keys.detect do |k|
    @env[k] != @before_env[k]
  end
end

#env_keysObject



40
41
42
43
# File 'lib/cutlass/env_diff.rb', line 40

def env_keys
  keys = (@before_env.keys + @env.keys) - skip_keys
  keys.uniq
end

#same?Boolean

Returns:



30
31
32
# File 'lib/cutlass/env_diff.rb', line 30

def same?
  !changed?
end

#to_sObject



22
23
24
25
26
27
28
# File 'lib/cutlass/env_diff.rb', line 22

def to_s
  env_keys.map do |k|
    next if @env[k] == @before_env[k]

    "  ENV['#{k}'] changed from '#{@before_env[k]}' to '#{@env[k]}'"
  end.compact.join($/)
end