diff options
author | Michael Peters <mtpeters@us.ibm.com> | 2016-08-04 16:08:56 -0400 |
---|---|---|
committer | Michael Peters <mtpeters@us.ibm.com> | 2016-08-04 16:08:56 -0400 |
commit | 4b249e66f4d0de32762fd41a6466d28848f60946 (patch) | |
tree | 846aca9dfe67696fec84d06210ba3ac36183c5a8 | |
parent | 9dd84228ddf50af118efbc68bf341c0b1eb00e1a (diff) | |
download | bundler-4b249e66f4d0de32762fd41a6466d28848f60946.tar.gz |
enables BUNDLE_MIRROR__HOSTNAME environment variables
-rw-r--r-- | lib/bundler/mirror.rb | 3 | ||||
-rw-r--r-- | lib/bundler/settings.rb | 6 | ||||
-rw-r--r-- | spec/bundler/mirror_spec.rb | 5 | ||||
-rw-r--r-- | spec/bundler/settings_spec.rb | 7 |
4 files changed, 15 insertions, 6 deletions
diff --git a/lib/bundler/mirror.rb b/lib/bundler/mirror.rb index 655d2b3d07..7d872966ee 100644 --- a/lib/bundler/mirror.rb +++ b/lib/bundler/mirror.rb @@ -43,7 +43,8 @@ module Bundler private def fetch_valid_mirror_for(uri) - mirror = (@mirrors[URI(uri.to_s.downcase)] || Mirror.new(uri)).validate!(@prober) + host = Settings.normalize_uri(URI(uri.to_s).host) + mirror = (@mirrors[URI(uri.to_s.downcase)] || @mirrors[host] || Mirror.new(uri)).validate!(@prober) mirror = Mirror.new(uri) unless mirror.valid? mirror end diff --git a/lib/bundler/settings.rb b/lib/bundler/settings.rb index 0c846d195c..f69b035d65 100644 --- a/lib/bundler/settings.rb +++ b/lib/bundler/settings.rb @@ -289,11 +289,7 @@ module Bundler def self.normalize_uri(uri) uri = uri.to_s uri = "#{uri}/" unless uri =~ %r{/\Z} - uri = URI(uri) - unless uri.absolute? - raise ArgumentError, "Gem sources must be absolute. You provided '#{uri}'." - end - uri + URI(uri) end end end diff --git a/spec/bundler/mirror_spec.rb b/spec/bundler/mirror_spec.rb index bd6d9bc636..28bf81c7a0 100644 --- a/spec/bundler/mirror_spec.rb +++ b/spec/bundler/mirror_spec.rb @@ -154,6 +154,11 @@ describe Bundler::Settings::Mirrors do expect(mirrors.for("http://rubygems.org/").uri).to eq(localhost_uri) end + it "parses a relative mirror key and returns a mirror for the parsed uri" do + mirrors.parse("mirror.rubygems.org", localhost_uri) + expect(mirrors.for("http://rubygems.org/").uri).to eq(localhost_uri) + end + context "with a uri parsed already" do before { mirrors.parse("mirror.http://rubygems.org/", localhost_uri) } diff --git a/spec/bundler/settings_spec.rb b/spec/bundler/settings_spec.rb index 0f7d2a0138..a66710fae7 100644 --- a/spec/bundler/settings_spec.rb +++ b/spec/bundler/settings_spec.rb @@ -207,6 +207,13 @@ that would suck --ehhh=oh geez it looks like i might have broken bundler somehow URI("http://rubygems-mirror.org/") ) end + + it "accepts keys using host names" do + settings["mirror.rubygems.org"] = "http://rubygems-mirror.org" + expect(settings.mirror_for("rubygems.org")).to eq( + URI("http://rubygems-mirror.org/") + ) + end end describe "BUNDLE_ keys format" do |