Ruby Language
Quelldateien laden
Suche…
Dateien müssen nur einmal geladen werden
Die Kernel # -Erforderungsmethode lädt Dateien nur einmal (mehrere Aufrufe require , dass der Code in dieser Datei nur einmal ausgewertet wird). Es durchsucht Ihren Ruby $LOAD_PATH nach der gewünschten Datei, wenn der Parameter kein absoluter Pfad ist. Erweiterungen wie .rb , .so , .o oder .dll sind optional. Relative Pfade werden in das aktuelle Arbeitsverzeichnis des Prozesses aufgelöst.
require 'awesome_print'
Mit dem Kernel # required_relative können Sie Dateien relativ zu der Datei laden, in der require_relative aufgerufen wird.
# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'
Quelldateien automatisch laden
Die Methode Kernel#autoload registriert den Dateinamen, der beim ersten Zugriff auf dieses Modul (das ein String oder ein Symbol sein kann) geladen wird (mithilfe von Kernel::require ).
autoload :MyModule, '/usr/local/lib/modules/my_module.rb'
Die Methode Kernel # autoload? Gibt den zu ladenden Dateinamen zurück, wenn der Name als autoload registriert ist.
autoload? :MyModule #=> '/usr/local/lib/modules/my_module.rb'
Laden optionaler Dateien
Wenn Dateien nicht verfügbar sind, die require wird Familie einen werfen LoadError . Dies ist ein Beispiel, das das Laden von optionalen Modulen nur veranschaulicht, wenn sie vorhanden sind.
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
Dateien wiederholt laden
Die Kernel- Methode # load bewertet den Code in der angegebenen Datei. Der Suchpfad wird wie require . Dieser Code wird bei jedem nachfolgenden Aufruf anders als bei require erneut ausgewertet. Es gibt keine load_relative .
load `somefile`
Laden mehrerer Dateien
Sie können jede beliebige Ruby-Technik verwenden, um dynamisch eine Liste von Dateien zu erstellen, die geladen werden sollen. Abbildung des Globings für Dateien, die mit dem test , geladen in alphabetischer Reihenfolge.
Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|
require_relative source
end