Подтвердить что ты не робот

Ruby требует, чтобы "файл" не работал, но требует "./file". Зачем?

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Лучший способ подумать о том, относится ли к переменной 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