diff options
| author | Masataka Pocke Kuwabara <kuwabara@pocke.me> | 2021-10-03 01:30:55 +0900 |
|---|---|---|
| committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2021-10-09 08:04:08 +0900 |
| commit | d03d122ba1851156c93ea21a9006a7d921ad073e (patch) | |
| tree | dbb58bee14392eb71c1341d45af7d90bfcf7b127 | |
| parent | ad92651d6428d59b7f4dbee7014f4d1127bbdbe8 (diff) | |
[rubygems/rubygems] Improve performance of Specification#missing_extensions?
https://github.com/rubygems/rubygems/commit/90c1919f94
| -rw-r--r-- | lib/rubygems/defaults.rb | 2 | ||||
| -rw-r--r-- | lib/rubygems/specification.rb | 4 | ||||
| -rw-r--r-- | spec/bundler/support/hax.rb | 5 | ||||
| -rw-r--r-- | 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 # 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 # 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 # 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 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 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 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 |
