Bug #15206
require_relative in std_lib
Description
I noticed that there are some require
for internal files in lib/
. Ideally, they would be using require_relative
instead. This is faster and more explicit.
Note: require_relative
had a potential issue with symlinks that was fixed in 2.5, so libraries that might be loaded from earlier Ruby, like rubygems
, can not yet be updated.
I've created a PR and would like to know if there are comments / objections / things I'm missing.
Related issues
Associated revisions
lib/*: Prefer require_relative over require.
[#15206] [Fix GH-1976]
lib/*: Prefer require_relative over require.
[#15206] [Fix GH-1976]
lib/*: Prefer require_relative over require, remove explicit extension
[#15206] [Fix GH-1976]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
lib/*: Prefer require_relative over require, remove explicit extension
[#15206] [Fix GH-1976]
lib/*: Prefer require_relative over require, remove explicit extension
[#15206] [Fix GH-1976]
lib/racc/parser.rb: use require for racc/cparse
- lib/racc/parser.rb: reverted r65505. require_relative does not work for racc/cparse.so, as extension libraries are placed in other directories than Ruby libraries.
Fix up r65505 [ci skip]
History
Updated by MSP-Greg (Greg L) 5 months ago
The Appveyor run on the PR passed.
Appveyor testing has been intermittently failing. With parallel/multi testing (test-all and/or test-spec), there can be a lot more files being checked and possibly loaded. Considering more than one CI VM may be exist on a system, and they may share drives, anything that lowers disk I/O is good.
Updated by shyouhei (Shyouhei Urabe) 5 months ago
- Is duplicate of Feature #8781: Use require_relative() instead of require() if possible added
Updated by nobu (Nobuyoshi Nakada) 4 months ago
- Status changed from Open to Closed
Updated by stomar (Marcus Stollsteimer) 4 months ago
For lib/racc/parser.rb
I reverted this in r65514 for the require of racc/cparse.so
(similar to r65511 for cgi/escape
).
Possibly there might be other C extensions that are required from within /lib
, where require_relative would not work?
(I only had a quick look into /lib
and /ext
, and racc
was an obvious other case, besides cgi
, where this problem might occur.)
PS. The LoadError for racc/cparse
is not that obvious because it is rescued and there is a Ruby fallback.
Updated by marcandre (Marc-Andre Lafortune) 4 months ago
Oh, good catch, I should have thought of that...
I modified my script to check if the path with .rb actually exists and it came back with only these two exceptions.
Updated by znz (Kazuhiro NISHIYAMA) 4 months ago
I revert examples in comment and replace numeric features too at r65548.
lib/*: Prefer require_relative over require.
[#15206] [Fix GH-1976]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e