diff --git a/lib/bundler/settings.rb b/lib/bundler/settings.rb index 03126f616c..abf7db21b4 100644 --- a/lib/bundler/settings.rb +++ b/lib/bundler/settings.rb @@ -430,6 +430,8 @@ module Bundler Pathname.new(ENV["BUNDLE_CONFIG"]) elsif ENV["BUNDLE_USER_CONFIG"] && !ENV["BUNDLE_USER_CONFIG"].empty? Pathname.new(ENV["BUNDLE_USER_CONFIG"]) + elsif ENV["BUNDLE_USER_HOME"] && !ENV["BUNDLE_USER_HOME"].empty? + Pathname.new(ENV["BUNDLE_USER_HOME"]).join("config") elsif Bundler.rubygems.user_home && !Bundler.rubygems.user_home.empty? Pathname.new(Bundler.rubygems.user_home).join(".bundle/config") end diff --git a/spec/bundler/commands/config_spec.rb b/spec/bundler/commands/config_spec.rb index 4e13a7903e..48f0ceab78 100644 --- a/spec/bundler/commands/config_spec.rb +++ b/spec/bundler/commands/config_spec.rb @@ -88,6 +88,16 @@ RSpec.describe ".bundle/config" do bundle "config get path", :env => { "BUNDLE_USER_CONFIG" => bundle_user_config } expect(out).to include("Set for the current user (#{bundle_user_config}): \"vendor\"") end + + context "when not explicitly configured, but BUNDLE_USER_HOME set" do + let(:bundle_user_home) { bundled_app(".bundle").to_s } + + it "uses the right location" do + bundle "config set path vendor", :env => { "BUNDLE_USER_HOME" => bundle_user_home } + bundle "config get path", :env => { "BUNDLE_USER_HOME" => bundle_user_home } + expect(out).to include("Set for the current user (#{bundle_user_home}/config): \"vendor\"") + end + end end describe "global" do