class Cutlass::EnvDiff

Diffs the environment

diff = EnvDiff.new

diff.changed? # => false

ENV["LOL"] = "rofl"

diff.changed? # => true

Attributes

before_env[R]
env[R]
skip_keys[R]

Public Class Methods

new(before_env: ENV.to_h.dup, skip_keys: [], env: ENV) click to toggle source
# 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

Public Instance Methods

changed?() click to toggle source
# File lib/cutlass/env_diff.rb, line 34
def changed?
  env_keys.detect do |k|
    @env[k] != @before_env[k]
  end
end
env_keys() click to toggle source
# File lib/cutlass/env_diff.rb, line 40
def env_keys
  keys = (@before_env.keys + @env.keys) - skip_keys
  keys.uniq
end
same?() click to toggle source
# File lib/cutlass/env_diff.rb, line 30
def same?
  !changed?
end
to_s() click to toggle source
# 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