diff options
author | David Rodriguez <deivid.rodriguez@riseup.net> | 2021-10-14 12:03:51 +0200 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2021-10-25 20:48:51 +0900 |
commit | 00412be20469407cd6da813eab6bfa5b63cd945f (patch) | |
tree | c6d8bd2a1a935e55eda72aa810859a1ca8c732db /lib | |
parent | f6d190950055f8700b144ab075971edd08754d52 (diff) |
[rubygems/rubygems] Show a proper error if gem path is not writable
Instead of showing the bug report place with an error at a randome
place.
https://github.com/rubygems/rubygems/commit/241854ce73
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bundler/errors.rb | 16 | ||||
-rw-r--r-- | lib/bundler/rubygems_gem_installer.rb | 4 |
2 files changed, 17 insertions, 3 deletions
diff --git a/lib/bundler/errors.rb b/lib/bundler/errors.rb index 565aaeeb9d..59898cd252 100644 --- a/lib/bundler/errors.rb +++ b/lib/bundler/errors.rb @@ -75,10 +75,22 @@ module Bundler end end + def permission_type + case @permission_type + when :create + "executable permissions for all parent directories and write permissions for `#{parent_folder}`" + else + "#{@permission_type} permissions for that path" + end + end + + def parent_folder + File.dirname(@path) + end + def message "There was an error while trying to #{action} `#{@path}`. " \ - "It is likely that you need to grant #{@permission_type} permissions " \ - "for that path." + "It is likely that you need to grant #{permission_type}." end status_code(23) diff --git a/lib/bundler/rubygems_gem_installer.rb b/lib/bundler/rubygems_gem_installer.rb index fa46451887..39c9031c4a 100644 --- a/lib/bundler/rubygems_gem_installer.rb +++ b/lib/bundler/rubygems_gem_installer.rb @@ -19,7 +19,9 @@ module Bundler FileUtils.rm_rf gem_dir FileUtils.rm_rf spec.extension_dir - FileUtils.mkdir_p gem_dir, :mode => 0o755 + SharedHelpers.filesystem_access(gem_dir, :create) do + FileUtils.mkdir_p gem_dir, :mode => 0o755 + end extract_files |