Ruby:正确加载父目录中的文件,该文件依赖于另一个文件

时间:2013-06-20 04:34:39

标签: ruby load

我知道这是一个扭曲的标题......我是红宝石的菜鸟编程,这是我的问题:

有两个文件包含不同的功能,其中一个是调用另一个

档案a.rb:
def f1(v1)......

文件b.rb:
load "a.rb"
def f2(v2)......

上述两个文件都在父目录中。现在,如果我使用b.rbload在当前目录中调用require,我将会遇到同样的错误:

LoadError: cannot load such file -- a.rb
from /Users/username/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in require' from /Users/username/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:inrequire' from /Users/username/b.rb:1:in `'

对于这种情况,我想出了两个解决方案:
1)将require' from /Users/username/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in放入文件f2 2)或删除文件a.rb中的行load "a.rb",以及我的实施中的b.rb两个文件。

但我认为无论哪种方式都会破坏这两个文件之间的逻辑关系/区别。这两个文件面临不同类型的问题,而函数load在没有f2的情况下无法执行任何操作。

我的问题是:有没有办法将两个函数分成两个文件同时只加载一次(不知道函数之间有任何依赖关系)?

1 个答案:

答案 0 :(得分:2)

在文件b.rb中:

require_relative "./a.rb"
def f2(v2)......

请参阅http://extensions.rubyforge.org/rdoc/classes/Kernel.html