module Procodile::Rbenv

Public Class Methods

without() { || ... } click to toggle source

If procodile is executed through rbenv it will pollute our environment which means that any spawned processes will be invoked with procodile's ruby rather than the ruby that the application wishes to use

# File lib/procodile/rbenv.rb, line 9
def self.without(&block)
  previous_environment = ENV.select { |k,v| k =~ /\A(RBENV\_)/ }
  if previous_environment.size > 0
    previous_environment.each { |key, value| ENV[key] = nil }
    previous_environment['PATH'] = ENV['PATH']
    ENV['PATH'] = ENV['PATH'].split(':').select { |p| !(p =~ /\.rbenv\/versions/) }.join(':')
  end
  yield
ensure
  previous_environment.each do |key, value|
    ENV[key] = value
  end
end