Po wykonaniu require 'foo'
Ruby sprawdza wszystkie katalogi w ścieżce ładowania pliku foo.rb
i wczytuje pierwszą znalezioną. Jeśli nie zostanie znaleziony plik o nazwie foo.rb
, a Ty jesteś , a nie za pomocą Rubygems, zostanie podniesiona LoadError
.
Jeśli są użyciu Rubygems (co jest prawdopodobne, zważywszy, że to jest wliczone w Ruby 1.9+), a następnie zamiast natychmiast podnosząc LoadError
wszystkie zainstalowane Gems są przeszukiwane, aby zobaczyć, jeśli jeden zawiera plik foo.rb
. Jeśli taki Klejnot zostanie znaleziony, zostanie dodany do ścieżki ładowania i plik zostanie załadowany.
Możesz samodzielnie manipulować ścieżką ładowania, jeśli chcesz upewnić się, że używana jest określona wersja biblioteki. Zwykle nie jest to coś, co jest zalecane, ale jest to sytuacja, w której chcesz to zrobić.
Istnieją dwa sposoby dodawania katalogów do ścieżki ładowania. Po pierwsze można zrobić to w rzeczywisty kod, za pomocą $LOAD_PATH
(lub $:
) zmiennej globalnej:
$LOAD_PATH.unshift '/path/to/the/gems/lib/'
require 'the_gem'
pamiętać, że zazwyczaj chcesz dodać lib
dir gem, a nie najwyższego poziomu reż gem (w rzeczywistości może się to różnić w zależności od rzeczywistego klejnotu, i można dodać więcej niż jeden katalog, ale normą jest lib
).
Innym sposobem jest użycie przełącznika wiersza polecenia -I
do ruby
wykonywalnego:
$ ruby -I/path/to/the/gems/lib/ test.rb
ten sposób mogłyby być czystsze bit, jak zwykle nie chcą być brudząc ze ścieżką od obciążenia wewnątrz twojego kodu, ale jeśli tylko testujesz bibliotekę, prawdopodobnie nie ma to większego znaczenia.
Po prostu użyj 'require 'gemname'' jeśli utworzyłeś' test.rb' w katalogu gem. –
czy masz plik gem? – apneadiving
Chciałbym utworzyć test.rb poza katalogiem gem, jeśli to możliwe. I nie mam pliku gemfile. – foobar