ruby-on-rails - 如何在不指定 ruby 路径的情况下导入
问题描述
当我开发 ruby 应用程序时。
我发现一些应用程序在没有指定特定路径的情况下导入其他模块,如下所示
require 'test'
我总是在某个目录中设置一些模块并设置以下路径。
require './sample/test'
如何在没有路径的情况下导入?
是否有任何环境设置?
我错过了重要的事情吗?
如果有人有意见,请告诉我。
谢谢
解决方案
正如评论中提到的,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(私有或公共)中的功能,那就去做。
推荐阅读
- android - Ktor 套接字客户端到自签名服务器:特定于域的配置需要 ... checkServerTrusted(X509Certificate[], String, String) 被使用
- matlab - 在psychtoolbox matlab中将一个屏幕分成几个屏幕
- list - 给定一个字符串,获取元组列表(字符,字符连续出现多少次) - Haskell
- wordpress - 将自定义 wordpress 主题上传到网站而不是当前主题
- javascript - 在 javascript 中找不到非异步函数
- reactjs - 如何在 React 中将 JWT 发送到后端?
- visual-studio-code - 是否有 API 可以将项目添加到排水沟上下文菜单?
- c++ - с++ winforms.dataGridView。如何为表格单元格着色?
- c++ - C++ 使用向量对读取数据类型字符串 int 和 double
- assembly - div 如何使用定点算术在汇编语言中发挥作用?