load在本地路径上工作,require则不工作

loadee.rb

puts '> This is the second file.' 

loaddemo.rb

 puts 'This is the first (master) program file.' load 'loadee.rb' puts 'And back again to the first file.' 

当我运行"ruby loaddemo.rb" ,这很好用。 两个文件都在同一个目录中,这就是我运行的目录。

但是,如果我将负载更改为require,并且有或没有扩展我得到:

 :29:in `require': no such file to load -- loadee.rb (LoadError) from :29:in `require' from loaddemo.rb:2:in `' 

我的问题当然是,为什么在这种情况下不需要工作? 它应该,对吗? 加载并要求使用不同的路径?

Ruby版本1.9.2

如果只提供require的文件名,它只会查看预定义的$LOAD_PATH目录。 但是,如果您提供带有文件名的路径,它应该工作:

 puts 'This is the first (master) program file.' require './loadee.rb' puts 'And back again to the first file.' 

您也可以将项目的文件夹添加到加载路径:

 $LOAD_PATH.unshift File.dirname(__FILE__) puts 'This is the first (master) program file.' require 'loadee.rb' puts 'And back again to the first file.' 

最后,您可以使用require_relative代替:

 puts 'This is the first (master) program file.' require_relative 'loadee.rb' puts 'And back again to the first file.' 

提供带文件名的路径似乎对我不起作用,我不想把一堆路径塞进我的$LOAD_PATH

检查文档 ,我发现require_relative

 require_relative 'loadee' 

适用于1.9.22.1.2

该文档表明, require根本不是要搜索相对路径,也不是load