Merge pull request #10803 from briancain/ensure-gemrc-set
Set gemrc through configuration method rather than relying on environment variable
This commit is contained in:
commit
9a0fa8c061
|
@ -40,6 +40,20 @@ module Vagrant
|
||||||
def initialize
|
def initialize
|
||||||
@plugin_gem_path = Vagrant.user_data_path.join("gems", RUBY_VERSION).freeze
|
@plugin_gem_path = Vagrant.user_data_path.join("gems", RUBY_VERSION).freeze
|
||||||
@logger = Log4r::Logger.new("vagrant::bundler")
|
@logger = Log4r::Logger.new("vagrant::bundler")
|
||||||
|
|
||||||
|
# TODO: Remove fix when https://github.com/rubygems/rubygems/pull/2735
|
||||||
|
# gets merged and released
|
||||||
|
#
|
||||||
|
# Because of a rubygems bug, we need to set the gemrc file path
|
||||||
|
# through this method rather than relying on the environment varible
|
||||||
|
# GEMRC. On windows, that path gets split on `:`: and `;`, which means
|
||||||
|
# the drive letter gets treated as its own path. If that path exists locally,
|
||||||
|
# (like having a random folder called `c` where the library was invoked),
|
||||||
|
# it fails thinking the folder `c` is a gemrc file.
|
||||||
|
gemrc_val = ENV["GEMRC"]
|
||||||
|
ENV["GEMRC"] = ""
|
||||||
|
Gem.configuration = Gem::ConfigFile.new(["--config-file", gemrc_val])
|
||||||
|
ENV["GEMRC"] = gemrc_val
|
||||||
end
|
end
|
||||||
|
|
||||||
# Enable Vagrant environment specific plugins at given data path
|
# Enable Vagrant environment specific plugins at given data path
|
||||||
|
|
|
@ -28,6 +28,19 @@ describe Vagrant::Bundler do
|
||||||
expect(subject.env_plugin_gem_path).to be_nil
|
expect(subject.env_plugin_gem_path).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#initialize" do
|
||||||
|
let(:gemrc_location) { "C:\\My\\Config\\File" }
|
||||||
|
|
||||||
|
it "should set up GEMRC through a flag instead of GEMRC" do
|
||||||
|
allow(ENV).to receive(:[]).with("VAGRANT_HOME")
|
||||||
|
allow(ENV).to receive(:[]).with("USERPROFILE")
|
||||||
|
|
||||||
|
allow(ENV).to receive(:[]).with("GEMRC").and_return(gemrc_location)
|
||||||
|
expect(Gem::ConfigFile).to receive(:new).with(["--config-file", gemrc_location])
|
||||||
|
init_subject = described_class.new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "#deinit" do
|
describe "#deinit" do
|
||||||
it "should provide method for backwards compatibility" do
|
it "should provide method for backwards compatibility" do
|
||||||
subject.deinit
|
subject.deinit
|
||||||
|
|
Loading…
Reference in New Issue