From 8b0779a0719ee702c59e1d638cccc32d9a69767b Mon Sep 17 00:00:00 2001 From: Joel Turkel Date: Mon, 7 Jan 2019 10:52:33 -0500 Subject: [PATCH] Don't check for the existence of a writable home directory if BUNDLE_USER_HOME is set --- lib/bundler.rb | 10 +++++----- spec/bundler/bundler_spec.rb | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/bundler.rb b/lib/bundler.rb index 137d916cc66..3115b931ec8 100644 --- a/lib/bundler.rb +++ b/lib/bundler.rb @@ -198,19 +198,19 @@ def tmp_home_path(login, warning) def user_bundle_path(dir = "home") env_var, fallback = case dir when "home" - ["BUNDLE_USER_HOME", Pathname.new(user_home).join(".bundle")] + ["BUNDLE_USER_HOME", proc { Pathname.new(user_home).join(".bundle") }] when "cache" - ["BUNDLE_USER_CACHE", user_bundle_path.join("cache")] + ["BUNDLE_USER_CACHE", proc { user_bundle_path.join("cache") }] when "config" - ["BUNDLE_USER_CONFIG", user_bundle_path.join("config")] + ["BUNDLE_USER_CONFIG", proc { user_bundle_path.join("config") }] when "plugin" - ["BUNDLE_USER_PLUGIN", user_bundle_path.join("plugin")] + ["BUNDLE_USER_PLUGIN", proc { user_bundle_path.join("plugin") }] else raise BundlerError, "Unknown user path requested: #{dir}" end # `fallback` will already be a Pathname, but Pathname.new() is # idempotent so it's OK - Pathname.new(ENV.fetch(env_var, fallback)) + Pathname.new(ENV.fetch(env_var, &fallback)) end def user_cache diff --git a/spec/bundler/bundler_spec.rb b/spec/bundler/bundler_spec.rb index 194d6752b2c..c21fc5f7a51 100644 --- a/spec/bundler/bundler_spec.rb +++ b/spec/bundler/bundler_spec.rb @@ -465,6 +465,7 @@ def clear_cached_requires_sudo it "should use custom home path as root for other paths" do ENV["BUNDLE_USER_HOME"] = bundle_user_home_custom.to_s + allow(Bundler.rubygems).to receive(:user_home).and_raise expect(Bundler.user_bundle_path).to eq(bundle_user_home_custom) expect(Bundler.user_bundle_path("home")).to eq(bundle_user_home_custom) expect(Bundler.user_bundle_path("cache")).to eq(bundle_user_home_custom.join("cache"))