0

我写了几个 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

任何关于我在这里可能做错的想法都将受到高度赞赏。谢谢!

4

4 回答 4

2

可以尝试使用require_relative:

require_relative '../../../a/app_version'
于 2014-07-29T13:50:49.500 回答
0

当您定义 Main::AppVersion 类时,它应该驻留在文件夹中(即 main/app_version.rb)

所以它不依赖于 $LOAD_PATH。

于 2014-07-29T13:55:31.577 回答
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

.

于 2014-07-29T13:57:54.123 回答
0

你的错误是:

LoadError: no such file to load -- AppVersion

所以require正在寻找一个文件AppVersion.rb。你说文件名是app_version.rb. 尝试加载它:

require 'app_version'

设置好之后$LOAD_PATH

于 2014-07-29T13:54:31.590 回答