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
|
||||
@plugin_gem_path = Vagrant.user_data_path.join("gems", RUBY_VERSION).freeze
|
||||
@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
|
||||
|
||||
# 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
|
||||
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
|
||||
it "should provide method for backwards compatibility" do
|
||||
subject.deinit
|
||||
|
|
Loading…
Reference in New Issue