class EacRubyUtils::Ruby::OnCleanEnvironment
def bundler_with_env_method_name
def bundler_with_env_method_name if ::Bundler.respond_to?(:with_unbundled_env) :with_unbundled_env else :with_clean_env end end
def bundler_with_unbundled_env(&block)
def bundler_with_unbundled_env(&block) with_bundler_modified do ::Bundler.send(bundler_with_env_method_name, &block) end end
def clean_env
def clean_env r = original_env.dup r.delete_if { |k, _| envvars_prefixes_to_clean.any? { |prefix| k.start_with?(prefix) } } r end
def envvars_prefixes_to_clean
-
(Array
-)
def envvars_prefixes_to_clean ENVVARS_PREFIXES_TO_CLEAN end
def initialize(&block)
def initialize(&block) @block = block @original_env = ::ENV.to_h end
def on_clean_envvars
def on_clean_envvars ::Bundler.send('with_env', clean_env) { block.call } end
def perform
def perform bundler_with_unbundled_env do on_clean_envvars end end
def with_bundler_modified(&block)
def with_bundler_modified(&block) cloned_env = original_env.dup ::EacRubyUtils::Ruby.on_replace_objects do |replacer| replacer.replace_self_method(::Bundler, :original_env) { cloned_env } block.call end end