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

Каковы пути, требующие поиска по умолчанию?

В Ruby мне сказали, что при выполнении

require "some_file"

Ruby будет искать файл в определенных местах.

Я знаю, что он ищет some_file.rb, но где его искать по умолчанию?

4b9b3361

Ответ 1

Это зависит от вашей платформы и того, как Ruby был скомпилирован, поэтому нет ответа на этот вопрос. Вы можете узнать, выполнив:

ruby -e 'puts $:'

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

Ответ 2

Ruby просматривает все пути, указанные в массиве $LOAD_PATH.

Вы также можете добавить каталог для поиска следующим образом:

$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)

Ответ 3

дополнительные пути можно указать, установив переменную среды RUBYLIB

Ответ 5

require (string) = > true или false

Ruby пытается загрузить библиотеку с именем string, возвращая true в случае успеха. Если имя файла не разрешено к абсолютному пути, оно будет искать в каталогах, перечисленных в $:. Если файл имеет расширение ".rb", он загружается в качестве исходного файла; если расширение ".so", ".o" или ".dll" или что-либо, что расширяет доступ к общей библиотеке по умолчанию на текущей платформе, Ruby загружает общую библиотеку в качестве расширения Ruby. В противном случае Ruby пытается добавить ".rb", ".so" и т.д. К имени. Имя загруженной функции добавляется к массиву в $:.

Ответ 6

При вызове ruby в командной строке вы можете -I дополнительные пути поиска, используя аргумент -I. Сравните вывод

$ ruby -e 'puts $:'

с выходом

$ ruby -I /tmp -e 'puts $:'

обратите внимание, как второй перечисляет /tmp в качестве опции. Вы можете использовать несколько -I чтобы добавить несколько путей.

Вы также можете использовать его с Шебанг:

#!/usr/bin/ruby -I /tmp -I /usr/local/lib/ruby