From 2a62902a202c3fc0d576b016d28a93f0d18f955f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Mon, 3 Feb 2020 11:50:59 +0100 Subject: Fix config location edge case If `BUNDLE_APP_CONFIG` is set to an absolute path, and there's no Gemfile up in the directory hierarchy, bundler would end up using the default config location instead of the customized one. This commit fixes that. --- lib/bundler.rb | 8 +++++++- spec/commands/config_spec.rb | 12 +++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/bundler.rb b/lib/bundler.rb index df345539c8..f081d4d63f 100644 --- a/lib/bundler.rb +++ b/lib/bundler.rb @@ -285,7 +285,13 @@ module Bundler def app_config_path if app_config = ENV["BUNDLE_APP_CONFIG"] - Pathname.new(app_config).expand_path(root) + app_config_pathname = Pathname.new(app_config) + + if app_config_pathname.absolute? + app_config_pathname + else + app_config_pathname.expand_path(root) + end else root.join(".bundle") end diff --git a/spec/commands/config_spec.rb b/spec/commands/config_spec.rb index 7a45dd0dd7..3a6b72d988 100644 --- a/spec/commands/config_spec.rb +++ b/spec/commands/config_spec.rb @@ -35,7 +35,7 @@ RSpec.describe ".bundle/config" do end end - describe "location" do + describe "location with a gemfile" do before :each do gemfile <<-G source "#{file_uri_for(gem_repo1)}" @@ -64,6 +64,16 @@ RSpec.describe ".bundle/config" do end end + describe "location without a gemfile" do + it "works with an absolute path" do + ENV["BUNDLE_APP_CONFIG"] = tmp("foo/bar").to_s + bundle "config set --local path vendor/bundle" + + expect(bundled_app(".bundle")).not_to exist + expect(tmp("foo/bar/config")).to exist + end + end + describe "global" do before(:each) do install_gemfile <<-G -- cgit v1.2.1