2013-05-30 18 views
6

Pracuję z Ruby 1.8 i mam skrypt, który chcę wywołać, ale znajduje się w folderze nadrzędnym. Poniżej znajduje się struktura:Załaduj plik z katalogu nadrzędnego

maindir/ 
neededscript.rb 
    subdir/ 
    subdir2/ 
     myscript.rb 

Jak mogę wymagać neededscript.rb od wewnątrz myscript.rb?

Odpowiedz

5

To co zrobiłem zamiast:

File.expand_path("../../neededsript.rb",File.dirname(__FILE__)) 
6

W Ruby> = 1,9 można użyć metody require_relative

require_relative uzupełnia wbudowane metody wymagają, pozwalając, aby załadować plik, który jest w stosunku do pliku zawierającego require_relative oświadczenie.

require_relative '../../neededscript.rb' 
+0

Przepraszamy za spóźniony komentarz, ale jak już wspomniałem, używam ruby ​​1.8. *. – zulq

+0

Ah bez obaw. Tylko dla kontekstu, zwrócę uwagę, że wersji nie było w pytaniu, kiedy odpowiedziałem :), ale zostałem edytowany po. Dla wersji ~ 1.8 każda z dwóch odpowiedzi jest dobra. – fullybaked

5

Można również dodać ścieżkę do ścieżki rubin libs dodając te linie do myscript.rb przed wykonaniem wymagają

binpath = File.dirname(__FILE__) 
$:.unshift File.expand_path(File.join(binpath, "..")) 
Powiązane problemy