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

Как потребовать рубиновый файл из другого каталога

Я пытаюсь потребовать файл rake, который я создал в другом файле, который у меня есть. Эти два файла находятся внутри двух разных каталогов. У меня есть требование в верхней части моего первого файла с именем второго файла внутри кавычек после запроса. Это говорит мне, что он не может загрузить такой файл. Означает ли это, потому что его в другом каталоге он не может найти? Я попытался придерживаться полного пути ко второму файлу, но он все еще не может загрузить файл. Кто-нибудь знает, как я могу загрузить второй файл в первый?

Заранее спасибо

4b9b3361

Ответ 1

require будет искать файлы только в нескольких местах, называемых "Путь загрузки". Вы можете просмотреть путь загрузки, используя глобальную переменную $LOAD_PATH в сеансе script или irb. Если он не находится в пути загрузки, он не найдет его.

Ruby 1.9 представил require_relative, который ищет в качестве отправной точки текущее местоположение файла.

# Will search $LOAD_PATH for file. 
require 'test/unit'
# Notice the '/' which tells it to look in the 
# 'test' folder for a file named 'unit.rb'

# Will look in current folder of file
require_relative 'my_folder/my_file'
# Will search in 'my_folder' for the file 'my_file.rb'

Обратите внимание, что require_relative не будет работать в irb.

Также обратите внимание, что если вы действительно хотите использовать require, вы можете запустить свой script, добавив местоположение в переменную $LOAD_PATH.

$LOAD_PATH << File.join('users', 'yourusername', 'your_folder')
# or
$LOAD_PATH << File.dirname(__FILE__)
# The second one enables you to move the file around on your
# system and still operate correctly
require 'my_file'

Здесь есть дополнительная документация от Ruby-Doc:

Ответ 2

Из документов: Предлагается использовать require relative. Документы

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

Когда вы используете require для загрузки файла, вы обычно получаете доступ к функциям, которые были правильно установлены и доступны в вашей системе. require не предлагает хорошего решения для загрузки файлов в код проекта. Это может быть полезно на этапе разработки, для доступа к тестовым данным или даже для доступа к файлам, которые "заблокированы" внутри проекта, а не предназначены для внешнего использования.

Например, если в каталоге "test" есть unit test классы и данные для них в тестовом каталоге "test/data", вы можете использовать такую ​​строку в тестовом примере:

require_relative "data/customer_data_1"

Ответ 3

Также возможно:

require './something.rb'

из текущего каталога для включения.