Neither ruby and nor irb can load .rb file in current directory

依然范特西╮ 提交于 2019-12-31 08:44:16

问题


I'm having a really noob problem with importing files in Ruby. I'm making a Ruby app in Windows XP. All the class files for the app are in "C:/Documents/Prgm/Surveyor_Ruby/lib". But when I require a file in another file, neither ruby nor irb can find the required file.

The current directory's contents:

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

Confirmation that irb is in correct directory:

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

...yet irb can't load 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>'

回答1:


None of these worked for me, but this did:

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



回答2:


require './hede'

or

require_relative 'hede'

This works for me in both Ruby (1.9.3) and JRuby (1.7.x) on linux. I haven't tested it on windows.




回答3:


Noticed the same behavior but my linux roots had me try:.\file.rb and it loaded into the irb. Try explicitly declaring the current directory.




回答4:


How about this command? A little cumbersome to write but really clean and it should always work:

➜ $ irb
> require "#{Dir.pwd}/file_to_load.rb"
=> true 



回答5:


it's damn dirty, but you can always do at the very first line:

$: << '.'

and off you go with pwd'ed require. It's quite useful for interactive/creative testing with IRB




回答6:


I believe both of the previous posts are correct, just for different uses. In IRB use an absolute path with require, with a file you can also use require with an absolute path, or use require_relative.




回答7:


If you're trying to do this with rvmsudo, I found this worked for me:

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


来源:https://stackoverflow.com/questions/3898174/neither-ruby-and-nor-irb-can-load-rb-file-in-current-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!