Нет ничего абсолютно эквивалентного.
Все файлы, которые были required
, перечислены в $LOADED_FEATURES
в том порядке, в котором они были require
d. Итак, если вы хотите узнать, откуда файл пришел сразу после того, как он был require
d, вам просто нужно посмотреть в конце:
$LOADED_FEATURES.last if require 'yaml'
# => 'C:/Program Files/Ruby/lib/ruby/1.9.1/yaml.rb'
Однако, если вы не записываете каждый вызов на require
, будет трудно определить, какая запись соответствует какому вызову. Кроме того, если файл уже находится в $LOADED_FEATURES
, он не будет загружен снова:
require 'yaml'
# => true
# true means: the file was loaded
$LOADED_FEATURES.last
# => 'C:/Program Files/Ruby/lib/ruby/1.9.1/yaml.rb'
require 'json'
$LOADED_FEATURES.last
# => 'C:/Program Files/Ruby/lib/ruby/1.9.1/json.rb'
require 'yaml'
# => false
# false means: the file wasn't loaded again, because it has already been loaded
$LOADED_FEATURES.last
# => 'C:/Program Files/Ruby/lib/ruby/1.9.1/json.rb'
# Last loaded feature is still JSON, because YAML wasn't actually loaded twice
Кроме того, многие библиотеки не содержатся в одном файле. Таким образом, файлы require
d могут сами содержать вызовы require
. В моем случае, например, require 'yaml'
не только загружает yaml.rb
, но и целую кучу файлов (15, если быть точным):
C:/Program Files/Ruby/lib/ruby/1.9.1/i386-mingw32/stringio.so
C:/Program Files/Ruby/lib/ruby/1.9.1/i386-mingw32/syck.so
C:/Program Files/Ruby/lib/ruby/1.9.1/syck/error.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/syck/basenode.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/syck/syck.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/syck/tag.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/syck/stream.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/syck/constants.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/date/format.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/date.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/syck/rubytypes.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/syck/types.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/yaml/syck.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/syck.rb
C:/Program Files/Ruby/lib/ruby/1.9.1/yaml.rb