[前][次][番号順一覧][スレッド一覧]

ruby-changes:68322

From: Masataka <ko1@a...>
Date: Sat, 9 Oct 2021 09:27:18 +0900 (JST)
Subject: [ruby-changes:68322] d03d122ba1 (master): [rubygems/rubygems] Improve performance of Specification#missing_extensions?

https://git.ruby-lang.org/ruby.git/commit/?id=d03d122ba1

From d03d122ba1851156c93ea21a9006a7d921ad073e Mon Sep 17 00:00:00 2001
From: Masataka Pocke Kuwabara <kuwabara@p...>
Date: Sun, 3 Oct 2021 01:30:55 +0900
Subject: [rubygems/rubygems] Improve performance of
 Specification#missing_extensions?

https://github.com/rubygems/rubygems/commit/90c1919f94
---
 lib/rubygems/defaults.rb      | 2 +-
 lib/rubygems/specification.rb | 4 ++--
 spec/bundler/support/hax.rb   | 5 ++++-
 test/rubygems/helper.rb       | 2 ++
 4 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
index f29104a1b7..39b69ddb1c 100644
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -59,7 +59,7 @@ module Gem https://github.com/ruby/ruby/blob/trunk/lib/rubygems/defaults.rb#L59
   # Path to specification files of default gems.
 
   def self.default_specifications_dir
-    File.join(Gem.default_dir, "specifications", "default")
+    @default_specifications_dir ||= File.join(Gem.default_dir, "specifications", "default")
   end
 
   ##
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 7ed963430f..bafc5e2619 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -1556,8 +1556,8 @@ class Gem::Specification < Gem::BasicSpecification https://github.com/ruby/ruby/blob/trunk/lib/rubygems/specification.rb#L1556
   # the gem.build_complete file is missing.
 
   def build_extensions # :nodoc:
-    return if default_gem?
     return if extensions.empty?
+    return if default_gem?
     return if File.exist? gem_build_complete_path
     return if !File.writable?(base_dir)
     return if !File.exist?(File.join(base_dir, 'extensions'))
@@ -2120,8 +2120,8 @@ class Gem::Specification < Gem::BasicSpecification https://github.com/ruby/ruby/blob/trunk/lib/rubygems/specification.rb#L2120
   # probably want to build_extensions
 
   def missing_extensions?
-    return false if default_gem?
     return false if extensions.empty?
+    return false if default_gem?
     return false if File.exist? gem_build_complete_path
 
     true
diff --git a/spec/bundler/support/hax.rb b/spec/bundler/support/hax.rb
index aaf8c74894..0ad5239128 100644
--- a/spec/bundler/support/hax.rb
+++ b/spec/bundler/support/hax.rb
@@ -9,7 +9,10 @@ module Gem https://github.com/ruby/ruby/blob/trunk/spec/bundler/support/hax.rb#L9
     Gem.ruby = ENV["RUBY"]
   end
 
-  @default_dir = ENV["BUNDLER_GEM_DEFAULT_DIR"] if ENV["BUNDLER_GEM_DEFAULT_DIR"]
+  if ENV["BUNDLER_GEM_DEFAULT_DIR"]
+    @default_dir = ENV["BUNDLER_GEM_DEFAULT_DIR"]
+    @default_specifications_dir = nil
+  end
 
   if ENV["BUNDLER_SPEC_PLATFORM"]
     class Platform
diff --git a/test/rubygems/helper.rb b/test/rubygems/helper.rb
index 812142f7d2..320f97e6c3 100644
--- a/test/rubygems/helper.rb
+++ b/test/rubygems/helper.rb
@@ -396,6 +396,7 @@ class Gem::TestCase < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/helper.rb#L396
 
     ENV['GEM_PRIVATE_KEY_PASSPHRASE'] = PRIVATE_KEY_PASSPHRASE
 
+    Gem.instance_variable_set(:@default_specifications_dir, nil)
     if Gem.java_platform?
       @orig_default_gem_home = RbConfig::CONFIG['default_gem_home']
       RbConfig::CONFIG['default_gem_home'] = @gemhome
@@ -479,6 +480,7 @@ class Gem::TestCase < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/helper.rb#L480
 
     RbConfig::CONFIG['bindir'] = @orig_bindir
 
+    Gem.instance_variable_set :@default_specifications_dir, nil
     if Gem.java_platform?
       RbConfig::CONFIG['default_gem_home'] = @orig_default_gem_home
     else
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]