ruby和nor irb都不能在当前目录中加载.rb文件

我在Ruby中导入文件时遇到了麻烦。 我在Windows XP中制作一个Ruby应用程序。 该应用程序的所有类文件都在"C:/Documents/Prgm/Surveyor_Ruby/lib" 。 但是当我require另一个文件中的文件时,ruby和irb都不能找到所需的文件。

当前目录的内容:

 C:\Documents\Prgm\Surveyor_Ruby\lib>dir Volume in drive C has no label. Volume Serial Number is AAAA-BBBB Directory of C:\Documents\Prgm\Surveyor_Ruby\lib 10/09/2010 06:32 PM  . 10/09/2010 06:32 PM  .. 10/08/2010 03:22 PM 5,462 main (commented).rb 10/08/2010 03:41 PM 92 question.rb 10/08/2010 09:06 PM 2,809 survey.rb 10/09/2010 06:25 PM 661 surveyor.rb 10/08/2010 01:39 PM 1,546 test.rb 5 File(s) 10,570 bytes 2 Dir(s) 40,255,045,632 bytes free 

确认irb在正确的目录中:

 C:\Documents\Prgm\Surveyor_Ruby\lib>irb irb(main):001:0> Dir.pwd => "C:/Documents/Prgm/Surveyor_Ruby/lib" 

…但是irb无法加载survey.rb:

 irb(main):002:0> require 'survey' LoadError: no such file to load -- survey from :29:in `require' from :29:in `require' from (irb):2 from C:/Ruby192/bin/irb:12:in `' 

这些都不适合我,但这样做:

 irb -I . >require 'file' => true 

注意到相同的行为,但我的linux根源让我尝试: .\file.rb并将其加载到irb中。 尝试明确声明当前目录。

 require './hede' 

要么

 require_relative 'hede' 

这适用于Linux上的Ruby(1.9.3)和JRuby(1.7.x)。 我没有在Windows上测试它。

这个命令怎么样? 写的有点麻烦,但真的很干净,应该总是有效:

 ➜$ irb
 > require“#{Dir.pwd} /file_to_load.rb”
 =>是的 

它太脏了,但你总是可以在第一行做:

 $: << '.' 

然后你去了pwd'ed要求。 它对于使用IRB进行交互式/创造性测试非常有用

我相信以前的post都是正确的,只是针对不同的用途。 在IRB中使用带有require的绝对路径,使用带有文件的require也可以使用绝对路径,或者使用require_relative

如果您正在尝试使用rvmsudo执行此操作,我发现这对我有用:

 rvmsudo irb -I '/Absolute/path/to/your/project'