在不同的目录中使用Ruby类

时间:2014-07-29 13:45:01

标签: ruby jruby load-path

我写过一些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 个答案:

答案 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