class ClimateControl::Modifier
Public Class Methods
new(environment_overrides = {}, &block)
click to toggle source
# File lib/climate_control/modifier.rb, line 5 def initialize(environment_overrides = {}, &block) @environment_overrides = environment_overrides.dup.stringify_keys! @block = block end
Public Instance Methods
process()
click to toggle source
# File lib/climate_control/modifier.rb, line 10 def process begin prepare_environment_for_block run_block ensure cache_environment_after_block delete_keys_that_do_not_belong revert_changed_keys end end
Private Instance Methods
cache_environment_after_block()
click to toggle source
# File lib/climate_control/modifier.rb, line 47 def cache_environment_after_block @env_after_block = clone_environment end
clone_environment()
click to toggle source
# File lib/climate_control/modifier.rb, line 61 def clone_environment ENV.to_hash end
copy_overrides_to_environment()
click to toggle source
# File lib/climate_control/modifier.rb, line 33 def copy_overrides_to_environment @environment_overrides.each do |key, value| ENV[key] = value end end
delete_keys_that_do_not_belong()
click to toggle source
# File lib/climate_control/modifier.rb, line 51 def delete_keys_that_do_not_belong (keys_to_remove - keys_changed_by_block).each {|key| ENV.delete(key) } end
keys_changed_by_block()
click to toggle source
# File lib/climate_control/modifier.rb, line 43 def keys_changed_by_block @keys_changed_by_block ||= OverlappingKeysWithChangedValues.new(@env_with_overrides_before_block, @env_after_block).keys end
keys_to_remove()
click to toggle source
# File lib/climate_control/modifier.rb, line 39 def keys_to_remove @environment_overrides.keys end
prepare_environment_for_block()
click to toggle source
# File lib/climate_control/modifier.rb, line 23 def prepare_environment_for_block @original_env = clone_environment copy_overrides_to_environment @env_with_overrides_before_block = clone_environment end
revert_changed_keys()
click to toggle source
# File lib/climate_control/modifier.rb, line 55 def revert_changed_keys (@original_env.keys - keys_changed_by_block).each do |key| ENV[key] = @original_env[key] end end
run_block()
click to toggle source
# File lib/climate_control/modifier.rb, line 29 def run_block @block.call end