我写过一些ruby课程。但是,当尝试从另一个目录访问一个时,我收到以下错误:
uninitialized constant Main::AppVersion
这就是目录结构的样子:
home --> a --> app_version.rb
home --> b --> c --> lib --> main.rb (and other classes)
“lib”中的所有内容都可以互相看到。但是,在尝试访问app_version时,它会失败。我将应用版本(home / a)的路径添加到$ LOAD_PATH。所以它应该从那里可用。我也试过“要求”我的其他课程,但是当我这样做时,我得到以下错误:
LoadError: no such file to load -- AppVersion
对于我在这里做错了什么的任何想法都将受到高度赞赏。谢谢!
答案 0 :(得分:2)
可以尝试使用require_relative:
require_relative '../../../a/app_version'
答案 1 :(得分:0)
你的错误是:
LoadError: no such file to load -- AppVersion
因此require
正在寻找文件AppVersion.rb
。你说文件名是app_version.rb
。尝试加载:
require 'app_version'
设置$LOAD_PATH
后。
答案 2 :(得分:0)
当您定义Main :: AppVersion类时,它应该位于主文件夹中(即main / app_version.rb)
所以它不依赖于$ LOAD_PATH。
答案 3 :(得分:0)
您必须要求该文件。
LoadError: no such file to load -- AppVersion
你require "app_version"
?或要求" AppVersion"? (第一个是正确的,并考虑到require_relative
)
另一种选择是运行ruby并给出包含路径,如
ruby -Ia -Ib/c/lib b/c/lib/main.rb