diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2021-09-30 15:52:05 +0200 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2021-10-10 23:12:03 +0900 |
commit | 11720818f68181cee38590d8c69a9003393f2363 (patch) | |
tree | 21ac01337d8d0c0f56709df306c4b93435089a6e /lib | |
parent | ef352c58659eaecdcb1e5dc384de7dc1e1205a6c (diff) |
[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
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rubygems/package.rb | 11 |
1 files 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 # 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 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 end end - if directories - directories.uniq! + if dir_mode File.chmod(dir_mode, *directories) end end |