Ответ 1
Если вы хотите require
создать файл не из системы $LOAD_PATH
, а скорее относительно каталога файла, с которым вы require
ing, используйте require_relative
. (Который, как вы можете видеть, не совсем подробно документирован.)
У меня есть папка, полная рубиновых файлов, и когда я пытаюсь использовать один файл в другом каталоге, использующем require 'file'
, я получаю LoadError
, но когда я использую require './file'
, все работает нормально. Может кто-нибудь объяснить мне, почему это происходит, и если есть какой-либо способ, я могу потребовать файл без добавления ./
в файл?
(Изображение каталога):
Если вы хотите require
создать файл не из системы $LOAD_PATH
, а скорее относительно каталога файла, с которым вы require
ing, используйте require_relative
. (Который, как вы можете видеть, не совсем подробно документирован.)
У вас нет текущего каталога в вашем пути загрузки.
Проверьте содержимое переменной $LOAD_PATH
Хотя это очень старый пост, я думаю, что дополнительная информация будет очень полезна для новичков.
Лучший способ подумать о том, относится ли к переменной UNIX $PATH. Просто обновляя переменную $PATH в UNIX - это список каталогов, в которых можно найти исполняемые файлы. Поэтому, когда вы вводите имя программы на любом терминале UNIX, ваш компьютер просматривает исполняемые файлы в каталогах, указанных в переменной $PATH. требуют чего-то очень похожего. Когда, например, вы пишете, нужно "установить" в верхней части вашего файла Ruby, вы сообщаете Ruby, чтобы просмотреть кучу каталогов для библиотеки с именем set.rb(библиотека библиотеки Ruby).
Итак, где Ruby ищет set.rb? Ну, еще раз, Ruby имеет нечто очень похожее на переменную UNIX $PATH. Это глобальная переменная $LOAD_PATH, также иногда известная ей уродливым и undescriptive псевдонимом $: (который я не предлагаю использовать, кстати, короткий, хотя это может быть). Это массив имен каталогов, где Ruby выглядит, когда дело касается запроса.
Существует приятный информативный пост здесь, где вы можете получить дополнительную информацию о require
, load
и require_relative