Bug #16988
closedKernel.load loads file from current directory without '.' in path
Description
Ruby allows to load files using Kernel.load
without explicitly specifying the relative path with .
I'm not sure it's a bug or a feature, but since documentation in master doesn't say anything about it and the behavior differs from require where it was changed intentionally, I consider it a bug
Reproduction steps¶
- Have a file (
file.rb
) in a directory - Start irb session in the directory
- Load a file:
load 'file.rb'
Tested in versions¶
- 2.7.1
- 2.6.6
- 2.5.3
Updated by nobu (Nobuyoshi Nakada) over 4 years ago
I don’t this is an implementation bug, but a documentation issue.
Updated by TheSmartnik (Nikita Misharin) over 4 years ago
nobu (Nobuyoshi Nakada) wrote in #note-1:
I don’t this is an implementation bug, but a documentation issue.
Shouldn't behavior be consistent with require, though?
Updated by jeremyevans0 (Jeremy Evans) over 4 years ago
TheSmartnik (Nikita Misharin) wrote in #note-2:
nobu (Nobuyoshi Nakada) wrote in #note-1:
I don’t this is an implementation bug, but a documentation issue.
Shouldn't behavior be consistent with require, though?
I don't think so. load
has always been able to load files that exist relative to the current directory, and require
has not. Technically, in Ruby <1.9, require
worked similarly because '.'
was in the default load path). load
and require
are different in many other ways, and changing this to increase the consistency between them doesn't make sense to me.
Changing load
's behavior would definitely break things. I agree with @nobu (Nobuyoshi Nakada) that this is a documentation issue, and I'll try to update the documentation to explain it.
Updated by jeremyevans (Jeremy Evans) over 4 years ago
- Status changed from Open to Closed
Applied in changeset git|e1bbb9ea9ce205320267783960cfb2e9215d5f52.
Document that Kernel#load will load relative to current directory [ci skip]
Update and format the Kernel#load documentation to separate the
three cases (absolute path, explicit relative path, other), and
also document that it raises LoadError on failure.
Fixes [Bug #16988]