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