Ruby Language
Caricamento dei file di origine
Ricerca…
Richiede il caricamento dei file solo una volta
Il metodo Kernel # richiede il caricamento dei file solo una volta (alcune chiamate da require
comporteranno il codice in quel file che viene valutato solo una volta). Cerca il tuo ruby $LOAD_PATH
per trovare il file richiesto se il parametro non è un percorso assoluto. Le estensioni come .rb
, .so
, .o
o .dll
sono facoltative. I percorsi relativi verranno risolti nella directory di lavoro corrente del processo.
require 'awesome_print'
Il kernel # require_relative consente di caricare file relativi al file in cui viene chiamato require_relative
.
# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'
Caricamento automatico dei file di origine
Il metodo Kernel#autoload
registra il nome del file da caricare (usando Kernel::require
) la prima volta che si accede al modulo (che può essere una stringa o un simbolo).
autoload :MyModule, '/usr/local/lib/modules/my_module.rb'
Il metodo Kernel # autoload? restituisce il nome del file da caricare se il nome è registrato come autoload
.
autoload? :MyModule #=> '/usr/local/lib/modules/my_module.rb'
Caricamento di file opzionali
Quando i file non sono disponibili, la famiglia require
genererà un LoadError
. Questo è un esempio che illustra il caricamento di moduli opzionali solo se esistono.
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
Caricamento di file ripetutamente
Il metodo Kernel # load valuterà il codice nel file specificato. Il percorso di ricerca sarà costruito come require
. Valuterà quel codice su ogni chiamata successiva a differenza del require
. Non c'è load_relative
.
load `somefile`
Caricamento di diversi file
Puoi utilizzare qualsiasi tecnica di ruby per creare dinamicamente un elenco di file da caricare. Illustrazione del globbing per i file che iniziano con il test
, caricati in ordine alfabetico.
Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|
require_relative source
end