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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow