Issue #8834 has been updated by phluid61 (Matthew Kerwin).


This is an unusual description of the "intended difference" between the methods. I understood the difference between the two was: #require loads the file only once, #load does it every time.  Yes, this implies that #load is for project-relative files (e.g. loading data), but it doesn't mean that #require is only for external libraries.
----------------------------------------
Feature #8834: Kernel#load_relative
https://bugs.ruby-lang.org/issues/8834#change-41419

Author: sawa (Tsuyoshi Sawada)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


The intended difference between `Kernel#require` and `Kernel#load` is that the former is for external libraries and the latter is for Ruby scripts internal to the project. Considering this fact, `load` should be more likely than `require` to be used in a situation where you want to call a file through a relative path. Strangely, there is `Kernel#require_relative`, but no `Kernel#load_relative`. I request `Kernel#load_relative`. It is even more necessary than `Kernel#require_relative`.

It seems to me that people are using `Kernel#require_relative` when they want to use a relative path, even in the context where they are supposed to use `load` because of the lack of `Kernel#load_relative`. I don't think this is a good practice. Furthermore, in cases where you have a file without a `.rb` or other extention that you want to call via a relative path, there is no good way to do it.



-- 
http://bugs.ruby-lang.org/