From: shyouhei@... Date: 2017-05-31T02:05:38+00:00 Subject: [ruby-core:81480] [Ruby trunk Feature#13613] Prefer that require/require_relative/load to tell us permission error if the target file is unreadable Issue #13613 has been updated by shyouhei (Shyouhei Urabe). Mmm, this is my private feeling but it seems introducing whole Errno::Efoobar set into require seems to be a drastic change. If we do such change, a formely-legal script like this: ```ruby begin require 'foo' rescue LoadError puts 'cannot load such file' end ``` should then be rewritten as: ```ruby begin require 'foo' rescue Errno::ENOENT puts 'no such file or directory' rescue Errno::EISDIR puts 'is a directory' rescue Errno::EACCESS puts 'access denied' rescue Errno::ELOOP puts 'too many levels of symbolic links' rescue ... ... end ``` And it's quite annoying. ---------------------------------------- Feature #13613: Prefer that require/require_relative/load to tell us permission error if the target file is unreadable https://bugs.ruby-lang.org/issues/13613#change-65189 * Author: sonots (Naotoshi Seo) * Status: Feedback * Priority: Normal * Assignee: * Target version: ---------------------------------------- ### Background https://github.com/google/google-api-ruby-client/issues/205 We've ever met a situation that read-permissions of files in released google-api-client gem were lost as: ``` $ ls -l ~/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/google-api-client-0.8.3/lib/google -rw-r----- 1 sonots sonots 27249 March 24 18:32 2015 api_client.rb ``` The error message was ``` in `require': cannot load such file -- api_client.rb (LoadError) ``` At that time, it took 30 minutes for me to find the reason why we get LoadError with the gem because the file exists. I looked the source codes load.c, and finally I found the reason as it is because of permission with my intuition. ### What I Want If `require` tells us PermissionError in addition to LoadError, I could figure out the reason soon. I think the additional information is helpful for finding such issues. -- https://bugs.ruby-lang.org/ Unsubscribe: