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

ruby-changes:68355

From: David <ko1@a...>
Date: Sun, 10 Oct 2021 23:12:20 +0900 (JST)
Subject: [ruby-changes:68355] 11720818f6 (master): [ruby/rubygems] Don't make duplicated checks on directory safety

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

From 11720818f68181cee38590d8c69a9003393f2363 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@r...>
Date: Thu, 30 Sep 2021 15:52:05 +0200
Subject: [ruby/rubygems] Don't make duplicated checks on directory safety

This seems to speed up `gem install` on Windows by more than 50%.

https://github.com/rubygems/rubygems/commit/1970b1296d
---
 lib/rubygems/package.rb | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb
index c4b29e4176..71f82463f9 100644
--- a/lib/rubygems/package.rb
+++ b/lib/rubygems/package.rb
@@ -400,7 +400,7 @@ EOM https://github.com/ruby/ruby/blob/trunk/lib/rubygems/package.rb#L400
   # extracted.
 
   def extract_tar_gz(io, destination_dir, pattern = "*") # :nodoc:
-    directories = [] if dir_mode
+    directories = []
     open_tar_gz io do |tar|
       tar.each do |entry|
         next unless File.fnmatch pattern, entry.full_name, File::FNM_DOTMATCH
@@ -417,9 +417,11 @@ EOM https://github.com/ruby/ruby/blob/trunk/lib/rubygems/package.rb#L417
           else
             File.dirname destination
           end
-        directories << mkdir if directories
 
-        mkdir_p_safe mkdir, mkdir_options, destination_dir, entry.full_name
+        unless directories.include?(mkdir)
+          mkdir_p_safe mkdir, mkdir_options, destination_dir, entry.full_name
+          directories << mkdir
+        end
 
         File.open destination, 'wb' do |out|
           out.write entry.read
@@ -432,8 +434,7 @@ EOM https://github.com/ruby/ruby/blob/trunk/lib/rubygems/package.rb#L434
       end
     end
 
-    if directories
-      directories.uniq!
+    if dir_mode
       File.chmod(dir_mode, *directories)
     end
   end
-- 
cgit v1.2.1


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

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