Recherche…


Les fichiers requis ne doivent être chargés qu'une seule fois

La méthode kernel # require ne chargera les fichiers qu'une seule fois (plusieurs appels à require auront pour résultat que le code de ce fichier sera évalué une seule fois). Il cherchera votre ruby $LOAD_PATH pour trouver le fichier requis si le paramètre n'est pas un chemin absolu. Les extensions comme .rb , .so , .o ou .dll sont facultatives. Les chemins relatifs seront résolus dans le répertoire de travail en cours du processus.

require 'awesome_print'

Le noyau # require_relative vous permet de charger des fichiers relatifs au fichier dans lequel require_relative est appelé.

# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'  

Chargement automatique des fichiers source

La méthode Kernel#autoload enregistre le nom du fichier à charger (en utilisant Kernel::require ) la première fois que ce module (qui peut être un String ou un symbole) est accédé.

autoload :MyModule, '/usr/local/lib/modules/my_module.rb' 

La méthode Kernel # autoload? renvoie le nom du fichier à charger si name est enregistré en tant que autoload .

autoload? :MyModule  #=> '/usr/local/lib/modules/my_module.rb'

Chargement de fichiers optionnels

Lorsque les fichiers ne sont pas disponibles, la famille require lance une LoadError . Ceci est un exemple qui illustre le chargement de modules optionnels uniquement s'ils existent.

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

Chargement de fichiers à plusieurs reprises

La méthode de chargement Noyau # évalue le code dans le fichier donné. Le chemin de recherche sera construit comme require . Il réévaluera ce code à chaque appel suivant, contrairement à la require . Il n'y a pas de load_relative .

load `somefile`

Chargement de plusieurs fichiers

Vous pouvez utiliser n'importe quelle technique Ruby pour créer dynamiquement une liste de fichiers à charger. Illustration de la mise en forme pour les fichiers commençant par test , chargés dans l'ordre alphabétique.

Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|

    require_relative source

end


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow