首页 > 解决方案 > 如何在不指定 ruby​​ 路径的情况下导入

问题描述

当我开发 ruby​​ 应用程序时。

我发现一些应用程序在没有指定特定路径的情况下导入其他模块,如下所示

require 'test'

我总是在某个目录中设置一些模块并设置以下路径。

require './sample/test'

如何在没有路径的情况下导入?

是否有任何环境设置?

我错过了重要的事情吗?

如果有人有意见,请告诉我。

谢谢

标签: ruby-on-railsruby

解决方案


正如评论中提到的,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(私有或公共)中的功能,那就去做。


推荐阅读