Ruby Language
Bronbestanden laden
Zoeken…
Vereisen dat bestanden slechts eenmaal worden geladen
De Kernel # vereisen methode zal bestanden slechts één keer te laden (meerdere telefoontjes naar require
zal resulteren in de code in dat bestand wordt slechts eenmaal geëvalueerd). Het zal uw ruby $LOAD_PATH
om het vereiste bestand te vinden als de parameter geen absoluut pad is. Extensies zoals .rb
, .so
, .o
of .dll
zijn optioneel. Relatieve paden worden omgezet in de huidige werkmap van het proces.
require 'awesome_print'
Met de kernel # vereist_relatief kunt u bestanden laden relatief ten opzichte van het bestand waarin require_relative
wordt genoemd.
# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'
Automatisch laden van bronbestanden
De methode Kernel#autoload
registreert de bestandsnaam die moet worden geladen (met behulp van Kernel::require
) de eerste keer dat toegang tot de module (dit kan een tekenreeks of een symbool zijn) is.
autoload :MyModule, '/usr/local/lib/modules/my_module.rb'
De methode Kernel # autoload? geeft als resultaat dat de bestandsnaam moet worden geladen als de naam is geregistreerd als autoload
.
autoload? :MyModule #=> '/usr/local/lib/modules/my_module.rb'
Optionele bestanden laden
Wanneer bestanden niet beschikbaar zijn, zal de require
familie een LoadError
gooien. Dit is een voorbeeld dat het laden van optionele modules alleen illustreert als ze bestaan.
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
Bestanden herhaaldelijk laden
De laadmethode Kernel # zal de code in het gegeven bestand evalueren. Het zoekpad wordt opgebouwd zoals require
. Het zal die code opnieuw evalueren bij elke volgende oproep, anders dan require
. Er is geen load_relative
.
load `somefile`
Meerdere bestanden laden
U kunt elke robijntechniek gebruiken om dynamisch een lijst met te laden bestanden te maken. Illustratie van globbing voor bestanden beginnend met test
, geladen in alfabetische volgorde.
Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|
require_relative source
end