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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow