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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow