Ruby Language
Загрузка исходных файлов
Поиск…
Требовать загрузки файлов только один раз
Ядро # требует метода будет загружать файлы только один раз (несколько вызовов require
, чтобы код в этом файле оценивался только один раз). Он будет искать ваш ruby $LOAD_PATH
чтобы найти нужный файл, если параметр не является абсолютным путем. Расширения, такие как .rb
, .so
, .o
или .dll
являются необязательными. Относительные пути будут разрешены к текущему рабочему каталогу процесса.
require 'awesome_print'
Ядро # require_relative позволяет загружать файлы по отношению к файлу, в котором вызывается require_relative
.
# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'
Автоматическая загрузка исходных файлов
Метод Kernel#autoload
регистрирует имя файла для загрузки (используя Kernel::require
) при первом доступе к модулю (который может быть строкой или символом).
autoload :MyModule, '/usr/local/lib/modules/my_module.rb'
Метод Kernel # autoload? возвращает имя файла для загрузки, если имя зарегистрировано как autoload
.
autoload? :MyModule #=> '/usr/local/lib/modules/my_module.rb'
Загрузка дополнительных файлов
Когда файлы недоступны, семейство require
вызовет LoadError
. Это пример, иллюстрирующий загрузку дополнительных модулей только в том случае, если они существуют.
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
Повторная загрузка файлов
Метод загрузки Kernel # будет оценивать код в данном файле. Путь поиска будет построен так же, как и в случае require
. Он будет переоценивать этот код при каждом последующем вызове в отличие от require
. Нет load_relative
.
load `somefile`
Загрузка нескольких файлов
Вы можете использовать любую рубиновую технику для динамического создания списка загружаемых файлов. Иллюстрация globbing для файлов, начинающихся с test
, загруженных в алфавитном порядке.
Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|
require_relative source
end