Показывать полный путь к файлу ruby ​​при загрузке

При чтении исходного кода я всегда хочу узнать полный путь к файлу, когда он загружен, есть ли какой-либо метод обратного вызова в ruby ​​для этого или любой другой способ сделать это? спасибо заранее.

ИЗМЕНИТЬ Разъяснение комментариев:

Я хочу знать, где находится загруженный "somefile", когда я выполняю эту строку: "load somefile"

Ответ 1

Лучший способ, я могу подумать, - исправить модуль Kernel. Согласно docs Kernel::load выполняет поиск $: для имени файла. Мы можем сделать то же самое и напечатать путь, если найдем его.

module Kernel
  def load_and_print(string)
    $:.each do |p|
      if File.exists? File.join(p, string)
        puts File.join(p, string)
        break
      end
    end
    load_original(string)
  end

  alias_method :load_original, :load
  alias_method :load, :load_and_print

end

Мы используем alias_method для хранения исходного метода load, который мы называем в конце нашего.

Ответ 2

Показать путь к файлу в Ruby

Как насчет простого (из быстрого теста в кемпинге):

File.expand_path(File.dirname(__FILE__))

?

Ответ 3

Ответ Гордона Уилсона велик, просто хотелось добавить, что вы также можете увидеть, какие библиотеки были загружены (и их полный путь!), посмотрев на вывод переменной $"(возвращает массив абсолютных имен файлов)

например. путь к последней загруженной библиотеке находится в конце массива

Ответ 4

Мне любопытно, почему вы используете load вместо require - за все время, используя Ruby. Мне никогда не приходилось использовать load.

Ответ 5

Чтобы получить полный путь к файлу, вы должны собрать строку следующим образом (где yourfileobject является объектом класса Ruby File).

File.expand_path(File.dirname(yourfileobject)) + "/" + yourfileobject.path