Sök…


Kräver att filer bara laddas en gång

Metoden Kernel # kräver laddar filer bara en gång (flera samtal att require kommer att resultera i att koden i den filen utvärderas endast en gång). Det kommer att söka i din rubin $LOAD_PATH att hitta den önskade filen om parametern inte är en absolut sökväg. Tillägg som .rb , .so , .o eller .dll är valfria. Relativa vägar kommer att lösas till processens aktuella katalog.

require 'awesome_print'

Med Kernel # kräva_relativ kan du ladda filer relativt den fil där require_relative kallas.

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

Laddar källfiler automatiskt

Metoden Kernel#autoload registrerar filnamn som ska laddas (med hjälp av Kernel::require ) första gången som modulen (som kan vara en sträng eller en symbol) nås.

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

Metoden Kernel # autoload? returnerar filnamnet som ska laddas om namnet är registrerat som autoload .

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

Läser in valfria filer

När filer inte är tillgängliga, kommer den require familjen kasta en LoadError . Detta är ett exempel som illustrerar att du laddar valfria moduler endast om de finns.

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

Laddar filer upprepade gånger

Metoden Kernel # -belastning kommer att utvärdera koden i den givna filen. Sökvägen kommer att konstrueras som require . Den kommer att utvärdera den koden på varje efterföljande samtal till skillnad från vad som require . Det finns ingen load_relative .

load `somefile`

Laddar flera filer

Du kan använda valfri rubinteknik för att dynamiskt skapa en lista över filer som ska laddas. Illustration av globbning för filer som börjar med test , laddat i alfabetisk ordning.

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

    require_relative source

end


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow