2013-01-10 21 views
10

Ruby中的require命令的工作原理是什麼?我用以下兩個文件測試它在同一個目錄中。要求找不到與.rb文件相同的目錄

test.rb

require 'requirements' 
square(2) 

requirements.rb

def square(x) 
    x*x 
end 

但是當我運行紅寶石test.rb而我在同一個目錄中的文件 「test.rb」 是和「 requirements.rb「,我得到的錯誤:

/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- requirements (LoadError) 
from /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
from test.rb:1:in `<main>' 

我認爲這意味着它無法找到requirements.rb文件。但它與test.rb位於同一目錄中!如何解決這個問題?

非常感謝提前。我爲這樣的noob問題表示歉意。

回答

32

IIRC,ruby 1.9不包含當前目錄('。')到LOAD_PATH。你可以做其中的一個:

# specify relative path 
require './test1' 

# use relative method 
require_relative 'test1' 

# add current dir to LOAD_PATH 
$LOAD_PATH.unshift '.' 
require 'test1' 
+0

謝謝,這是有道理的。 – User314159

3

我也剛剛開始學習ruby如何工作,所以我不完全確定這是否有幫助。但嘗試require_relative而不是require,我認爲它會工作。
Afaik需要在ruby庫中搜索。

相關問題