2013-01-10 16 views
10

Jak dokładnie działa polecenie require w Ruby? Przetestowałem to z następującymi dwoma plikami, które znajdują się w tym samym katalogu.require nie może znaleźć pliku .rb o tym samym katalogu

test.rb

require 'requirements' 
square(2) 

requirements.rb

def square(x) 
    x*x 
end 

Ale kiedy biegnę rubinowy test.rb gdy jestem w tym samym katalogu co pliki "test.rb" i " requirements.rb ", pojawia się błąd:

/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>' 

co moim zdaniem oznacza, że ​​nie może znaleźć pliku requirements.rb. Ale jest w tym samym katalogu co test.rb! Jak to naprawić?

Bardzo dziękuję z góry. Przepraszam za tak noobowe pytania.

Odpowiedz

32

IIRC, ruby ​​1.9 nie zawiera bieżącego katalogu (".") Do LOAD_PATH. można wykonać jedną z nich:

# specify relative path 
require './test1' 

# use relative method 
require_relative 'test1' 

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

Dzięki, to ma sens. – User314159

3

ja też właśnie zaczęła się jak rubin działa, więc nie jestem całkowicie pewien, czy to pomaga. Ale spróbuj require_relative zamiast wymagać i myślę, że to zadziała.
Afaik wymaga wyszukiwania w bibliotece ruby.

Powiązane problemy