Как импортировать без указания пути в ruby

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

Когда я разрабатываю приложение ruby.

Я обнаружил, что некоторые приложения импортируют другие модули без указания конкретного пути, например, следующего

require 'test'

Я всегда устанавливаю некоторые модули в определенный каталог и задаю следующий путь.

require './sample/test'

Как я могу импортировать без path?

Существуют ли какие-либо настройки среды для этого?

Я упускаю важную вещь?

Если у кого-то есть мнение, пожалуйста, дайте мне знать.

Спасибо

Комментарии:

1. Это относится к $LOAD_PATH — возможно, это сообщение в блоге будет полезно: thoughtbot.com/blog/following-the-path

2. смотрите также: medium.com/@ellishim /…

Ответ №1:

Как упоминалось в комментариях, Ruby просматривает $LOAD_PATH глобальную переменную, чтобы знать, где искать необходимые библиотеки.

Обычно, в большинстве случаев, вы не должны возиться с этим и просто оставить все как есть.

Когда вы видите, что другие библиотеки используют require без начальной точки для относительного пути (например, require 'sinatra' ), это обычно означает одно из следующих:

  1. Они загружают предустановленный gem, и, поскольку домашний путь к gem является частью $LOAD_PATH , его можно найти и загрузить.
  2. Код, который вы видите, является частью gem, и он загружает один из своих собственных файлов.
  3. Код, который вы видите, является частью более крупного фреймворка (например, Rails), который изменил $LOAD_PATH переменную.

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

 pp $LOAD_PATH
 

Если по какой-то причине вы настаиваете на изменении $LOAD_PATH , чтобы загрузить свои собственные локальные файлы, вы можете сделать это следующим образом:

 $LOAD_PATH.unshift __dir__
require 'my-local-file'
 

Итог, моя рекомендация вам такова: не используйте этот метод только для того, чтобы ваши require утверждения «выглядели лучше», и если у вас есть функциональность, которую можно инкапсулировать в gem (частный или общедоступный), сделайте это.