From ac3f80a58e1d27b92e4f6d2f5a3cff8ba530e1e3 Mon Sep 17 00:00:00 2001 From: xndcn Date: Tue, 4 Aug 2020 13:25:59 +0800 Subject: [rubygems/rubygems] Add writable check for cache dir Sometimes "install_dir/cache" directory is not writable although "install_dir" is writable. https://github.com/rubygems/rubygems/commit/665221cb69 --- lib/rubygems/remote_fetcher.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/rubygems') diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb index 20ddf471e1..40ac0e95c0 100644 --- a/lib/rubygems/remote_fetcher.rb +++ b/lib/rubygems/remote_fetcher.rb @@ -114,11 +114,12 @@ class Gem::RemoteFetcher # always replaced. def download(spec, source_uri, install_dir = Gem.dir) + install_cache_dir = File.join install_dir, "cache" cache_dir = if Dir.pwd == install_dir # see fetch_command install_dir - elsif File.writable? install_dir - File.join install_dir, "cache" + elsif File.writable?(install_cache_dir) || (File.writable?(install_dir) && (not File.exist?(install_cache_dir))) + install_cache_dir else File.join Gem.user_dir, "cache" end -- cgit v1.2.3