2013-01-10 10 views
10

Come funziona esattamente il comando require in Ruby? L'ho provato con i seguenti due file che si trovano nella stessa directory.require non riesce a trovare un file .rb che sia la stessa directory

test.rb

require 'requirements' 
square(2) 

requirements.rb

def square(x) 
    x*x 
end 

Ma quando corro rubino test.rb mentre io sono nella stessa directory dei file "test.rb" e " requirements.rb", ottengo l'errore:

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

che credo significa che non riesce a trovare il file requirements.rb. Ma è nella stessa directory di test.rb! Come si risolve questo?

Molto grazie in anticipo. Mi scuso per queste domande noob.

risposta

32

IIRC, ruby ​​1.9 non include la directory corrente ('.') A LOAD_PATH. Si può fare una di queste:

# specify relative path 
require './test1' 

# use relative method 
require_relative 'test1' 

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

Grazie, questo ha senso. – User314159

3

anch'io appena iniziato a imparare come funziona rubino, quindi non sono perfettamente sicuro se questo aiuta. Ma prova require_relative invece di require e penso che funzionerà.
Afaik richiede ricerche nella ruby ​​libary.

Problemi correlati