2013-01-10 9 views
10

Wie genau funktioniert der require-Befehl in Ruby? Ich habe es mit den folgenden zwei Dateien getestet, die sich im selben Verzeichnis befinden.require kann keine .rb-Datei finden, die dasselbe Verzeichnis ist

test.rb

require 'requirements' 
square(2) 

requirements.rb

def square(x) 
    x*x 
end 

Aber wenn ich laufe Rubin test.rb, während ich im selben Verzeichnis wie die Dateien "test.rb" bin und " requirements.rb ", bekomme ich den Fehler:

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

was bedeutet, dass es bedeutet, dass es die requirements.rb Datei nicht finden kann. Aber es ist im selben Verzeichnis wie test.rb! Wie repariert man das?

Vielen Dank im Voraus. Ich entschuldige mich für solche Noob-Fragen.

Antwort

32

IIRC, ruby ​​1.9 enthält kein aktuelles Verzeichnis ('.') Zu LOAD_PATH. Sie können eine von ihnen tun:

# specify relative path 
require './test1' 

# use relative method 
require_relative 'test1' 

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

Danke, das macht Sinn. – User314159

3

ich auch gerade erst begonnen zu lernen, wie Rubin funktioniert, so dass ich bin mir nicht ganz sicher, ob das hilft. Aber versuchen Sie require_relative anstelle von require und ich denke, es wird funktionieren.
Afaik erfordern Suchen in der Ruby-Bibliothek.

Verwandte Themen