Sha256: 6d027077a8f2a95eb58b787857fca241f1d8ceaea2fdb9dd96ca1e38bbec94f6

Contents?: true

Size: 980 Bytes

Versions: 34

Compression:

Stored size: 980 Bytes

Contents

# frozen_string_literal: true

require 'bundler'

module EacRubyUtils
  module Ruby
    class << self
      # Executes a block in an environment when the variables BUNDLE* and RUBY* are removed.
      def on_clean_environment
        bundler_with_unbundled_env do
          on_clean_envvars('BUNDLE', 'RUBY') { yield }
        end
      end

      private

      def bundler_with_unbundled_env(&block)
        if ::Bundler.respond_to?(:with_unbundled_env)
          ::Bundler.with_unbundled_env(&block)
        else
          ::Bundler.with_clean_env(&block)
        end
      end

      def on_clean_envvars(*start_with_vars)
        old_values = envvars_starting_with(start_with_vars)
        old_values.each_key { |k| ENV.delete(k) }
        yield
      ensure
        old_values&.each { |k, v| ENV[k] = v }
      end

      def envvars_starting_with(start_with_vars)
        ENV.select { |k, _v| start_with_vars.any? { |var| k.start_with?(var) } }
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
eac_ruby_utils-0.101.0 lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.25.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.24.1 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_ruby_utils-0.100.0 lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.24.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_ruby_utils-0.99.0 lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.23.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.22.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.21.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.20.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.19.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.18.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.17.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.16.1 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_ruby_utils-0.98.0 lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.16.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.15.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.14.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_ruby_utils-0.97.0 lib/eac_ruby_utils/ruby/on_clean_environment.rb
eac_tools-0.13.0 sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb