summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Peters <mtpeters@us.ibm.com>2016-08-04 16:08:56 -0400
committerMichael Peters <mtpeters@us.ibm.com>2016-08-04 16:08:56 -0400
commit4b249e66f4d0de32762fd41a6466d28848f60946 (patch)
tree846aca9dfe67696fec84d06210ba3ac36183c5a8
parent9dd84228ddf50af118efbc68bf341c0b1eb00e1a (diff)
downloadbundler-4b249e66f4d0de32762fd41a6466d28848f60946.tar.gz
enables BUNDLE_MIRROR__HOSTNAME environment variables
-rw-r--r--lib/bundler/mirror.rb3
-rw-r--r--lib/bundler/settings.rb6
-rw-r--r--spec/bundler/mirror_spec.rb5
-rw-r--r--spec/bundler/settings_spec.rb7
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