diff options
author | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-16 18:49:26 +0900 |
---|---|---|
committer | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-30 00:39:06 +0900 |
commit | fcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch) | |
tree | 64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/lib/rubygems/compatibility.rb |
Fresh start
Diffstat (limited to 'jni/ruby/lib/rubygems/compatibility.rb')
-rw-r--r-- | jni/ruby/lib/rubygems/compatibility.rb | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/jni/ruby/lib/rubygems/compatibility.rb b/jni/ruby/lib/rubygems/compatibility.rb new file mode 100644 index 0000000..6a00a19 --- /dev/null +++ b/jni/ruby/lib/rubygems/compatibility.rb @@ -0,0 +1,59 @@ +# :stopdoc: + +#-- +# This file contains all sorts of little compatibility hacks that we've +# had to introduce over the years. Quarantining them into one file helps +# us know when we can get rid of them. +# +# Ruby 1.9.x has introduced some things that are awkward, and we need to +# support them, so we define some constants to use later. +#++ +module Gem + # Only MRI 1.9.2 has the custom prelude. + GEM_PRELUDE_SUCKAGE = RUBY_VERSION =~ /^1\.9\.2/ and RUBY_ENGINE == "ruby" +end + +# Gem::QuickLoader exists in the gem prelude code in ruby 1.9.2 itself. +# We gotta get rid of it if it's there, before we do anything else. +if Gem::GEM_PRELUDE_SUCKAGE and defined?(Gem::QuickLoader) then + Gem::QuickLoader.remove + + $LOADED_FEATURES.delete Gem::QuickLoader.path_to_full_rubygems_library + + if path = $LOADED_FEATURES.find {|n| n.end_with? '/rubygems.rb'} then + raise LoadError, "another rubygems is already loaded from #{path}" + end + + class << Gem + remove_method :try_activate if Gem.respond_to?(:try_activate, true) + end +end + +module Gem + RubyGemsVersion = VERSION + + # TODO remove at RubyGems 3 + + RbConfigPriorities = %w[ + MAJOR + MINOR + TEENY + EXEEXT RUBY_SO_NAME arch bindir datadir libdir ruby_install_name + ruby_version rubylibprefix sitedir sitelibdir vendordir vendorlibdir + rubylibdir + ] + + unless defined?(ConfigMap) + ## + # Configuration settings from ::RbConfig + ConfigMap = Hash.new do |cm, key| # TODO remove at RubyGems 3 + cm[key] = RbConfig::CONFIG[key.to_s] + end + else + RbConfigPriorities.each do |key| + ConfigMap[key.to_sym] = RbConfig::CONFIG[key] + end + end + + RubyGemsPackageVersion = VERSION +end |