W Ruby, powiedziano mi, że kiedy robiJakie są ścieżki, które "wymagają" domyślnie wyszukuje?
require "some_file"
Ruby będzie szukał pliku w niektórych miejscach.
Wiem, że to wygląda na some_file.rb
, ale gdzie to wygląda na to domyślnie?
W Ruby, powiedziano mi, że kiedy robiJakie są ścieżki, które "wymagają" domyślnie wyszukuje?
require "some_file"
Ruby będzie szukał pliku w niektórych miejscach.
Wiem, że to wygląda na some_file.rb
, ale gdzie to wygląda na to domyślnie?
To zależy od platformy i jak Ruby został skompilowany, więc nie ma „ten” Odpowiedź na to pytanie. Można dowiedzieć się, uruchamiając:
ruby -e 'puts $:'
Generalnie jednak, masz standardowe, witryny i ścieżek sprzedawca Ruby bibliotecznych, w tym łuku, wersję i ogólnym katalogu pod siebie.
$ LOAD_PATH zmienna globalna (także o nazwie $ :) zawiera listę katalogów, które są przeszukiwane.
Patrz: http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-require
require (string) => true lub false
Ruby próbuje załadować biblioteki nazwie ciąg, zwracając true, jeśli sukces. Jeśli nazwa pliku nie zostanie przekształcona w ścieżkę bezwzględną, zostanie przeszukana w katalogach podanych w $ :. Jeśli plik ma rozszerzenie ".rb", jest on ładowany jako plik źródłowy; jeżeli przedłużenie to „.so”, „.o” lub „.dll”, lub cokolwiek domyślnym rozszerzeniem biblioteki dzielone jest na obecnej platformie, Ruby ładuje bibliotekę współdzieloną jako rozszerzenie Ruby. W przeciwnym razie, Ruby próbuje dodać ".rb", ".so" i tak dalej do nazwy. Nazwa załadowanego obiektu jest dodawana do tablicy w $ :.
Ruby wygląda we wszystkich ścieżek określonych w tablicy $LOAD_PATH
.
Można również dodać katalog do wyszukiwania tak:
$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)
Dokładnie to, czego potrzebowałem. Dzięki! – Kilhoffer
dodatkowe ścieżki może być określony przez ustawienie zmiennej środowiska RUBYLIB
Jest „the” odpowiedź. Zmienna $: lub $ LOAD_PATH rzeczywiście podaje pełną listę przeszukiwanych miejsc. Sam zauważyłeś prosty i czysty sposób na wydrukowanie tego ... – Perry
Ah. Zależy od tego, jak czytasz pytanie: istnieje "odpowiedź" na pytanie, gdzie ta rubin wygląda, ale zmieni się, jeśli uruchomisz inną Ruby lub na innej platformie. np .: MRI 1.8.7 i REE używają różnych ścieżek, lub Darwin i MRI Linuksa używają subtelnie różnych ścieżek. Nie byłem pewien, który z nich, więc czułem się bardziej komfortowo z tą odpowiedzią. –
To prawda mało, choć Zgaduję pytającego po prostu chciał wiedzieć, w jaki sposób dowiedzieć się, co ścieżka obciążenie było zamiast zakładając, że była stała na różnych platformach. – Perry