From: "phluid61 (Matthew Kerwin)" Date: 2013-08-30T10:39:37+09:00 Subject: [ruby-core:56867] [ruby-trunk - Feature #8834] Kernel#load_relative 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/