Zoeken…


Vereisen dat bestanden slechts eenmaal worden geladen

De Kernel # vereisen methode zal bestanden slechts één keer te laden (meerdere telefoontjes naar require zal resulteren in de code in dat bestand wordt slechts eenmaal geëvalueerd). Het zal uw ruby $LOAD_PATH om het vereiste bestand te vinden als de parameter geen absoluut pad is. Extensies zoals .rb , .so , .o of .dll zijn optioneel. Relatieve paden worden omgezet in de huidige werkmap van het proces.

require 'awesome_print'

Met de kernel # vereist_relatief kunt u bestanden laden relatief ten opzichte van het bestand waarin require_relative wordt genoemd.

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

Automatisch laden van bronbestanden

De methode Kernel#autoload registreert de bestandsnaam die moet worden geladen (met behulp van Kernel::require ) de eerste keer dat toegang tot de module (dit kan een tekenreeks of een symbool zijn) is.

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

De methode Kernel # autoload? geeft als resultaat dat de bestandsnaam moet worden geladen als de naam is geregistreerd als autoload .

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

Optionele bestanden laden

Wanneer bestanden niet beschikbaar zijn, zal de require familie een LoadError gooien. Dit is een voorbeeld dat het laden van optionele modules alleen illustreert als ze bestaan.

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

Bestanden herhaaldelijk laden

De laadmethode Kernel # zal de code in het gegeven bestand evalueren. Het zoekpad wordt opgebouwd zoals require . Het zal die code opnieuw evalueren bij elke volgende oproep, anders dan require . Er is geen load_relative .

load `somefile`

Meerdere bestanden laden

U kunt elke robijntechniek gebruiken om dynamisch een lijst met te laden bestanden te maken. Illustratie van globbing voor bestanden beginnend met test , geladen in alfabetische volgorde.

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

    require_relative source

end


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow