diff --git a/lib/appraisal/command.rb b/lib/appraisal/command.rb index fd9cdb81..c7c63d75 100644 --- a/lib/appraisal/command.rb +++ b/lib/appraisal/command.rb @@ -3,22 +3,21 @@ module Appraisal # Executes commands with a clean environment class Command - BUNDLER_ENV_VARS = %w(RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE).freeze - - attr_reader :command, :env, :gemfile, :original_env + attr_reader :command, :env, :gemfile def initialize(command, options = {}) @gemfile = options[:gemfile] @env = options.fetch(:env, {}) @command = command_starting_with_bundle(command) - @original_env = {} end def run - with_clean_env { ensure_bundler_is_available } - announce + Bundler.with_original_env do + ensure_bundler_is_available + announce - with_clean_env do + ENV["BUNDLE_GEMFILE"] = gemfile + ENV["APPRAISAL_INITIALIZED"] = "1" env.each_pair do |key, value| ENV[key] = value end @@ -31,15 +30,6 @@ def run private - def with_clean_env - unset_bundler_env_vars - ENV['BUNDLE_GEMFILE'] = gemfile - ENV['APPRAISAL_INITIALIZED'] = '1' - yield - ensure - restore_env - end - def ensure_bundler_is_available version = Utils.bundler_version unless system %(gem list --silent -i bundler -v #{version}) @@ -66,17 +56,6 @@ def announce end end - def unset_bundler_env_vars - BUNDLER_ENV_VARS.each do |key| - original_env[key] = ENV[key] - ENV[key] = nil - end - end - - def restore_env - original_env.each { |key, value| ENV[key] = value } - end - def command_starts_with_bundle?(original_command) if original_command.is_a?(Array) original_command.first =~ /^bundle/