Ruby Language
Cargando archivos de origen
Buscar..
Requieren que los archivos se carguen solo una vez
El método Kernel # require cargará los archivos solo una vez (varias llamadas require
que el código en ese archivo sea evaluado solo una vez). $LOAD_PATH
tu ruby $LOAD_PATH
para encontrar el archivo requerido si el parámetro no es una ruta absoluta. Extensiones como .rb
, .so
, .o
o .dll
son opcionales. Las rutas relativas se resolverán en el directorio de trabajo actual del proceso.
require 'awesome_print'
El Kernel # require_relative le permite cargar archivos relativos al archivo en el que se llama a require_relative
.
# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'
Carga automática de archivos fuente
El método Kernel#autoload
registra el nombre de archivo a cargar (usando Kernel::require
) la primera vez que se accede a ese módulo (que puede ser una cadena o un símbolo).
autoload :MyModule, '/usr/local/lib/modules/my_module.rb'
El método Kernel # autoload? devuelve el nombre de archivo que se cargará si el nombre se registra como autoload
.
autoload? :MyModule #=> '/usr/local/lib/modules/my_module.rb'
Cargando archivos opcionales
Cuando los archivos no están disponibles, la familia require
lanzará un LoadError
. Este es un ejemplo que ilustra la carga de módulos opcionales solo si existen.
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
Cargando archivos repetidamente
El método de carga Kernel # evaluará el código en el archivo dado. La ruta de búsqueda se construirá como se require
. Reevaluará ese código en cada llamada subsiguiente a diferencia del require
. No hay load_relative
.
load `somefile`
Cargando varios archivos
Puedes usar cualquier técnica de ruby para crear dinámicamente una lista de archivos para cargar. Ilustración de globbing para archivos que comienzan con test
, cargados en orden alfabético.
Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|
require_relative source
end