#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
Когда я разрабатываю приложение ruby.
Я обнаружил, что некоторые приложения импортируют другие модули без указания конкретного пути, например, следующего
require 'test'
Я всегда устанавливаю некоторые модули в определенный каталог и задаю следующий путь.
require './sample/test'
Как я могу импортировать без path?
Существуют ли какие-либо настройки среды для этого?
Я упускаю важную вещь?
Если у кого-то есть мнение, пожалуйста, дайте мне знать.
Спасибо
Комментарии:
1. Это относится к
$LOAD_PATH
— возможно, это сообщение в блоге будет полезно: thoughtbot.com/blog/following-the-path2. смотрите также: medium.com/@ellishim /…
Ответ №1:
Как упоминалось в комментариях, Ruby просматривает $LOAD_PATH
глобальную переменную, чтобы знать, где искать необходимые библиотеки.
Обычно, в большинстве случаев, вы не должны возиться с этим и просто оставить все как есть.
Когда вы видите, что другие библиотеки используют require
без начальной точки для относительного пути (например, require 'sinatra'
), это обычно означает одно из следующих:
- Они загружают предустановленный gem, и, поскольку домашний путь к gem является частью
$LOAD_PATH
, его можно найти и загрузить. - Код, который вы видите, является частью gem, и он загружает один из своих собственных файлов.
- Код, который вы видите, является частью более крупного фреймворка (например, Rails), который изменил
$LOAD_PATH
переменную.
Вы можете увидеть все доступные папки $LOAD_PATH
следующим образом:
pp $LOAD_PATH
Если по какой-то причине вы настаиваете на изменении $LOAD_PATH
, чтобы загрузить свои собственные локальные файлы, вы можете сделать это следующим образом:
$LOAD_PATH.unshift __dir__
require 'my-local-file'
Итог, моя рекомендация вам такова: не используйте этот метод только для того, чтобы ваши require
утверждения «выглядели лучше», и если у вас есть функциональность, которую можно инкапсулировать в gem (частный или общедоступный), сделайте это.