Ruby require 'file' не работает, но требует './file'.Зачем? - PullRequest
11 голосов
/ 26 сентября 2010

У меня есть папка, полная рубиновых файлов, и когда я пытаюсь запросить один файл в другом, который находится в том же каталоге, используя require 'file', я получаю LoadError, но когда я использую require './file', все работает нормально. Может кто-нибудь объяснить мне, почему это происходит, и если есть какой-то способ, которым я могу требовать файл без добавления ./ в файл?

(изображение каталога): alt text

Ответы [ 3 ]

16 голосов
/ 26 сентября 2010

Если вы хотите require файл не из системы $LOAD_PATH, а относительно каталога файла, который вы require ing из , вы должны использовать require_relative.(Что, как вы видите, не совсем экстенсивно задокументировано.)

3 голосов
/ 26 сентября 2010

У вас нет текущего каталога в вашем пути загрузки.

Проверьте содержимое переменной $ LOAD_PATH

0 голосов
/ 08 декабря 2017

Хотя это очень старый пост, я думаю, что некоторая дополнительная информация будет очень полезна для начинающих.

Лучший способ понять, что требуется, - это обратиться к переменной UNIX $ PATH.Переменная $ PATH в UNIX представляет собой список каталогов, в которых можно найти исполняемые файлы.Поэтому, когда вы вводите имя программы на любом терминале UNIX, ваш компьютер просматривает исполняемые файлы в каталогах, указанных в переменной $ PATH.Требуется что-то очень похожее.Например, когда вы пишете require 'set' в верхней части вашего файла Ruby, вы говорите Ruby просмотреть несколько каталогов для библиотеки с именем set.rb (библиотека set Ruby).

Итакгде Ruby ищет set.rb?Ну, опять же, в Ruby есть нечто очень похожее на переменную $ PATH в UNIX.Это глобальная переменная $ LOAD_PATH, также иногда известная своим уродливым и неописуемым псевдонимом $: (кстати, я не советую его использовать - хотя и коротким).Это массив имен каталогов, куда Ruby смотрит, когда сталкивается с требованием.

Есть хороший информативный пост здесь , где вы можете получить дополнительную информацию о require, loadrequire_relative

...