Метод require
в рубине будет искать lib_path и загружать первые файлы соответствия, если необходимо. Есть ли способ распечатать путь к файлу, который будет загружен. Я ищу, идеально встроенную, функциональность, похожую на команду which
в bash, и надеюсь, что это тоже может быть так просто. Благодарю.Откройте файл ruby require, который будет загружен?
ответ
Я не знаю о встроенной функциональности, но определение собственного не сложно. Вот решение адаптировано из this question:
def which(string)
$:.each do |p|
if File.exist? File.join(p, string)
puts File.join(p, string)
break
end
end
end
which 'nokogiri'
#=> /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri
Пояснение: $:
представляет собой предварительно определенные переменные. Это массив мест для поиска файлов, которые вы можете load
или require
. Метод which
выполняет итерацию по каждому пути, ища файл, на который вы его назвали. Если он находит совпадение, он возвращает путь к файлу.
Я предполагаю, что вы хотите, чтобы на выходе была единственная строка, показывающая полный путь к файлу required
, например which
. Если вы также хотите увидеть файлы файл required
загрузит себя, что-то подобное решение в связанном вопросе может быть более подходящим:
module Kernel
def require_and_print(string)
$:.each do |p|
if File.exist? File.join(p, string)
puts File.join(p, string)
break
end
end
require_original(string)
end
alias_method :require_original, :require
alias_method :require, :require_and_print
end
require 'nokogiri'
#=> /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/rubygems-update-1.3.5/lib/rbconfig
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml/pp
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml/sax
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml/node
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml/xpath
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xslt
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/html
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/css
# /opt/local/lib/ruby1.9/1.9.1/racc/parser.rb
$ драгоценный камень, который имя файла # (не .rb суффикс), что я использую ...
- 1. CodeIgniter: файл не будет загружен
- 2. файл не будет загружен, PHP
- 3. Найти путь к файлу, который будет загружен
- 4. javascript, создайте файл изображения из строки Base64, который будет загружен
- 5. Преобразование холста HTML5 в файл, который будет загружен?
- 6. Переименуйте pdf-файл, который будет загружен на лету
- 7. `require ': невозможно загрузить такой файл - Ruby + Rspec
- 8. ruby - require & не может загрузить такой файл
- 9. ruby `require ': невозможно загрузить такой файл
- 10. Как изменить имя файла, который будет загружен
- 11. Ruby load/require files
- 12. Какой файл FileVersionInfo будет загружен моей программой?
- 13. Opera: .js файл не будет загружен
- 14. Файл не будет загружен на ftp-сервер
- 15. Какой файл будет загружен сначала в cakephp?
- 16. WebViewer HTML файл не будет загружен
- 17. Проверьте, будет ли файл загружен? CodeIgniter
- 18. Как определить, загружен ли загруженный файл excel, который загружен?
- 19. Ruby require and self.require
- 20. Nokogiri Ruby 'require' Issues
- 21. Ruby require problem
- 22. Как работает ruby `require`?
- 23. `require ': невозможно загрузить такой файл
- 24. Создание файла, который будет загружен в онлайн-форму
- 25. Ruby не может использовать require
- 26. Ruby: 'требуется' возвращает ложь, даже если файл не загружен
- 27. Rails - принудительный XML-шаблон, который будет загружен вместо рендеринга
- 28. Как указать тип файла, который будет загружен в веб-службе
- 29. Добавление загруженного контента в видеоролик, который будет загружен
- 30. `require ': невозможно загрузить такой файл. Запуск ruby из скрипта bash.
Спасибо. У меня было ощущение, что мне нужно будет создать свою собственную реализацию. Кстати, это похоже, похоже, работает с ruby 1.9, потому что 1.8 не включает в себя индивидуальные пути жемчужины явно в $ :. –