load works on local path, require doesn't

前端 未结 2 1843
孤独总比滥情好
孤独总比滥情好 2021-02-07 01:44

loadee.rb

puts \'> This is the second file.\'

loaddemo.rb

puts \'This is the first (master) program file.\'
load \'loadee.rb         


        
相关标签:
2条回答
  • 2021-02-07 02:01

    Providing a path with the filename seemed not to work for me, and I didn't want to cram a bunch of paths into my $LOAD_PATH.

    Checking out the documentation, I found require_relative.

    require_relative 'loadee'
    

    Works in both 1.9.2 and 2.1.2.

    The documentation indicates that require is not intended to search relative paths at all, and neither is load.

    0 讨论(0)
  • 2021-02-07 02:20

    If you provide just a filename to require, it will only look in the predefined $LOAD_PATH directories. However, if you provide a path with your filename, it should work:

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

    You could also add your project's folder to the load path instead:

    $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.'
    

    And last, you could just use require_relative instead:

    puts 'This is the first (master) program file.'
    require_relative 'loadee.rb'
    puts 'And back again to the first file.'
    
    0 讨论(0)
提交回复
热议问题