Показывать полный путь к файлу 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