Ruby Language
Laddar källfiler
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