Ruby Language
Ładowanie plików źródłowych
Szukaj…
Wymagaj, aby pliki były ładowane tylko raz
Metoda jądra # wymaga ładuje pliki tylko raz (kilka wywołań require
spowoduje, że kod w tym pliku będzie oceniany tylko raz). Przeszuka ruby $LOAD_PATH
aby znaleźć wymagany plik, jeśli parametr nie jest ścieżką bezwzględną. Rozszerzenia takie jak .rb
, .so
, .o
lub .dll
są opcjonalne. Ścieżki względne zostaną rozstrzygnięte w bieżącym katalogu roboczym procesu.
require 'awesome_print'
Kernel # require_relative pozwala załadować pliki w stosunku do pliku, w którym require_relative
nazywa.
# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'
Automatyczne ładowanie plików źródłowych
Metoda Kernel#autoload
rejestruje nazwę pliku do załadowania (przy użyciu Kernel::require
) przy pierwszym dostępie do tego modułu (który może być ciągiem lub symbolem).
autoload :MyModule, '/usr/local/lib/modules/my_module.rb'
Metoda Kernel # autoload? zwraca nazwę pliku do załadowania, jeśli nazwa jest zarejestrowana jako autoload
.
autoload? :MyModule #=> '/usr/local/lib/modules/my_module.rb'
Ładowanie opcjonalnych plików
Gdy pliki nie są dostępne, require
rodzina zgłosi LoadError
. Jest to przykład ilustrujący ładowanie opcjonalnych modułów tylko wtedy, gdy istnieją.
module TidBits
@@unavailableModules = []
[
{ name: 'CoreExtend', file: 'core_extend/lib/core_extend' } \
, { name: 'Fs' , file: 'fs/lib/fs' } \
, { name: 'Options' , file: 'options/lib/options' } \
, { name: 'Susu' , file: 'susu/lib/susu' } \
].each do |lib|
begin
require_relative lib[ :file ]
rescue LoadError
@@unavailableModules.push lib
end
end
end # module TidBits
Wielokrotne ładowanie plików
Metoda ładowania jądra # oceni kod w danym pliku. Ścieżka wyszukiwania zostanie skonstruowana zgodnie z require
. Ponownie oceni ten kod przy każdym kolejnym wywołaniu, w przeciwieństwie do require
. Nie ma load_relative
.
load `somefile`
Ładowanie kilku plików
Możesz użyć dowolnej techniki ruby, aby dynamicznie utworzyć listę plików do załadowania. Ilustracja globowania dla plików rozpoczynających się od test
, ładowana w kolejności alfabetycznej.
Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|
require_relative source
end