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

15,782

Solution 1

None of these worked for me, but this did:

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

Solution 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.

Solution 3

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 

Solution 4

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.

Solution 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

Share:
15,782
Bad Request
Author by

Bad Request

Updated on June 13, 2022

Comments

  • Bad Request
    Bad Request almost 2 years

    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>'
    
  • Jörg W Mittag
    Jörg W Mittag about 13 years
    This only works if the current directory happens to be the one that both the files are in.
  • Darme
    Darme over 11 years
    Check also my solution, it's especially fine when you didn't fire up irb with -I . to set the pwd as the $LOAD_PATH directory.
  • John Hinnegan
    John Hinnegan almost 11 years
    Thanks for this. I have no idea why require wasn't working for me.
  • Dan
    Dan over 10 years
    Wonderful feature of irb!
  • Pramod
    Pramod about 8 years
    @DanKozlowski More like, bad design of Ruby! In Python, the current directory is added to PATH by default.