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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow