aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/spec_fetcher.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-28 22:25:55 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-28 22:25:55 +0000
commita5dfaca00a94bc3d135aae52b4458f5a355bf0ed (patch)
tree77c9580bb289422d6e97749934a8c24c8aadc76c /lib/rubygems/spec_fetcher.rb
parent3fc7731297d8de1f52cec9382a4f1f0a08bea949 (diff)
downloadruby-a5dfaca00a94bc3d135aae52b4458f5a355bf0ed.tar.gz
* lib/rubygems/ext/builder.rb: Fix incompatibilities when installing
extensions. Patch by Nobu. [ruby-trunk - Bug #7968] [ruby-trunk - Bug #7971] * lib/rubygems/ext/ext_conf_builder.rb: ditto. * lib/rubygems/installer.rb: ditto. * test/rubygems/test_gem_ext_ext_conf_builder.rb: Test for the above. * test/rubygems/test_gem_installer.rb: ditto. * lib/rubygems/commands/sources_command.rb: Prefer HTTPS over HTTP. * lib/rubygems/defaults.rb: ditto * lib/rubygems/dependency_resolver.rb: Ditto. * lib/rubygems/source.rb: ditto. * lib/rubygems/spec_fetcher.rb: ditto. * lib/rubygems/specification.rb: ditto. * lib/rubygems/test_utilities.rb: ditto. * test/rubygems/test_gem.rb: Test for the above. * test/rubygems/test_gem_commands_sources_command.rb: ditto. * test/rubygems/test_gem_dependency_resolver_api_set.rb: ditto. * test/rubygems/test_gem_remote_fetcher.rb: ditto. * test/rubygems/test_gem_source.rb: ditto. * test/rubygems/test_gem_spec_fetcher.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/spec_fetcher.rb')
-rw-r--r--lib/rubygems/spec_fetcher.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/rubygems/spec_fetcher.rb b/lib/rubygems/spec_fetcher.rb
index 3345f6537e..aeed37ba5e 100644
--- a/lib/rubygems/spec_fetcher.rb
+++ b/lib/rubygems/spec_fetcher.rb
@@ -188,6 +188,8 @@ class Gem::SpecFetcher
list = {}
Gem.sources.each_source do |source|
+ source = upgrade_http_source source
+
begin
names = case type
when :latest
@@ -225,5 +227,31 @@ class Gem::SpecFetcher
cache[source.uri] ||= source.load_specs(type)
end
end
+
+ def upgrade_http_source source
+ uri = source.uri
+
+ return source unless uri.scheme.downcase == 'http'
+
+ https_uri = uri.dup
+ https_uri.scheme = 'https'
+ https_uri += '/'
+
+ Gem::RemoteFetcher.fetcher.fetch_path https_uri, nil, true
+
+ say "Upgraded #{uri} to HTTPS"
+
+ https_uri += uri.request_uri
+
+ source.uri = URI https_uri.to_s # cast to URI::HTTPS
+
+ source
+ rescue Gem::RemoteFetcher::FetchError
+ say "Upgrading #{uri} to HTTPS failed, continuing" if
+ Gem.configuration.really_verbose
+
+ source
+ end
+
end