Ruby`require';:无法加载此类文件(加载错误)
我的目录结构如下所示:Ruby`require';:无法加载此类文件(加载错误),ruby,Ruby,我的目录结构如下所示: - lib - yp-crawler (directory) - file-a.rb - file-b.rb - file-c.rb - yp-crawler.rb require "yp-crawler/file-c" require "yp-crawler/file-b" require "yp-crawler/file-a" module YPCrawler end 我的lib/yp crawler.rb文件如
- lib
- yp-crawler (directory)
- file-a.rb
- file-b.rb
- file-c.rb
- yp-crawler.rb
require "yp-crawler/file-c"
require "yp-crawler/file-b"
require "yp-crawler/file-a"
module YPCrawler
end
我的lib/yp crawler.rb
文件如下所示:
- lib
- yp-crawler (directory)
- file-a.rb
- file-b.rb
- file-c.rb
- yp-crawler.rb
require "yp-crawler/file-c"
require "yp-crawler/file-b"
require "yp-crawler/file-a"
module YPCrawler
end
当我尝试通过执行以下操作在命令行上运行文件时:
ruby lib/yp-crawler.rb
我得到这个错误:
`require': cannot load such file -- yp-crawler/file-c (LoadError)
from .rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from lib/yp-crawler.rb:1:in `<main>'
`require':无法加载此类文件--yp crawler/file-c(LoadError)
from.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
来自lib/yp crawler.rb:1:in`'
这可能是什么原因造成的?根据API Dock,
require\u relative
是您所需要的
Ruby尝试加载名为string的库,该库相对于所需的
文件的路径。如果无法确定文件的路径,则会显示LoadError
提高。如果加载了文件,则返回true,否则返回false
所以你要做的就是
require_relative "file-a"
require_relative "file-b"
require_relative "file-c"
您可以做的另一件事是将目录添加到
$LOAD\u PATH
(这是大多数gem需要文件的方式)。$LOAD\u PATH
(又称$:
)是ruby在调用require
时查找文件的地方
所以你可以试试这个代码
# lib/yp-crawler.rb
$LOAD_PATH.unshift File.expand_path('..', __FILE__)
# it can be $LOAD_PATH.push also
require "yp-crawler/file-c"
require "yp-crawler/file-b"
require "yp-crawler/file-a"
module YPCrawler
end
附言。
例如,你可以知道回形针是如何做同样的事情的。你有没有尝试过
要求相对的“file-a”
?@davidhu2000 Bruv…完美。成功了。加上它作为答案,我会接受的。谢谢出于好奇,这是自1.8/1.9以来的一个新变化吗?我正要发布这个。