summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--tool/downloader.rb34
-rw-r--r--version.h2
3 files changed, 41 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 70be314..f3c0387 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Tue Aug 18 22:52:50 2015 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/downloader.rb: support old versions of ruby.
+
+ * tool/downloader.rb: now can download gems by http if openssl is not
+ available (this may be danger!)
+
Tue Aug 18 20:10:13 2015 Tanaka Akira <akr@fsij.org>
* numeric.c (Init_Numeric): Fix document for Float::MIN and
diff --git a/tool/downloader.rb b/tool/downloader.rb
index dd3173b..8f169d5 100644
--- a/tool/downloader.rb
+++ b/tool/downloader.rb
@@ -1,4 +1,33 @@
require 'open-uri'
+begin
+ require 'net/https'
+ $rubygems_schema = 'https'
+
+ # open-uri of ruby 2.2.0 accept an array of PEMs as ssl_ca_cert, but old
+ # versions are not. so, patching OpenSSL::X509::Store#add_file instead.
+ class OpenSSL::X509::Store
+ alias orig_add_file add_file
+ def add_file(pems)
+ Array(pems).each do |pem|
+ if File.directory?(pem)
+ add_path pem
+ else
+ orig_add_file pem
+ end
+ end
+ end
+ end
+ # since open-uri internally checks ssl_ca_cert by File.directory?, to allow
+ # accept an array.
+ class <<File
+ alias orig_directory? directory?
+ def File.directory? files
+ files.is_a?(Array) ? false : orig_directory?(files)
+ end
+ end
+rescue LoadError
+ $rubygems_schema = 'http'
+end
class Downloader
class GNU < self
@@ -10,7 +39,10 @@ class Downloader
class RubyGems < self
def self.download(name, dir = nil, ims = true, options = {})
options[:ssl_ca_cert] = Dir.glob(File.expand_path("../lib/rubygems/ssl_certs/*.pem", File.dirname(__FILE__)))
- super("https://rubygems.org/downloads/#{name}", name, dir, ims, options)
+ if $rubygems_schema != 'https'
+ warn "*** using http instead of https ***"
+ end
+ super("#{$rubygems_schema}://rubygems.org/downloads/#{name}", name, dir, ims, options)
end
end
diff --git a/version.h b/version.h
index ae1acdb..a73e8d6 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.3"
#define RUBY_RELEASE_DATE "2015-08-18"
-#define RUBY_PATCHLEVEL 172
+#define RUBY_PATCHLEVEL 173
#define RUBY_RELEASE_YEAR 2015
#define RUBY_RELEASE_MONTH 8