我在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 <DIR> .
10/09/2010 06:32 PM <DIR> ..
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 <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from (irb):2
from C:/Ruby192/bin/irb:12:in `<main>'
答案 0 :(得分:62)
这些都不适合我,但确实如此:
irb -I .
>require 'file'
=> true
答案 1 :(得分:9)
注意到相同的行为,但我的linux root让我尝试:.\file.rb
并将其加载到irb中。尝试明确声明当前目录。
答案 2 :(得分:9)
require './hede'
或
require_relative 'hede'
这适用于Linux上的Ruby(1.9.3)和JRuby(1.7.x)。我没有在Windows上测试它。
答案 3 :(得分:8)
这个命令怎么样?写的有点麻烦,但真的很干净,应该始终有效:
➜ $ irb > require "#{Dir.pwd}/file_to_load.rb" => true
答案 4 :(得分:3)
它太脏了,但你总是可以在第一行做到:
$: << '.'
然后你去了pwd'ed要求。 它对于IRB的交互式/创意测试非常有用
答案 5 :(得分:2)
我相信以前的帖子都是正确的,只是针对不同的用途。在IRB中,使用带有require
的绝对路径,使用文件,您也可以使用require
和绝对路径,或使用require_relative
。
答案 6 :(得分:1)
如果您正在尝试使用rvmsudo执行此操作,我发现这对我有用:
rvmsudo irb -I '/Absolute/path/to/your/project'