我知道这是一个扭曲的标题......我是红宝石的菜鸟编程,这是我的问题:
有两个文件包含不同的功能,其中一个是调用另一个
档案a.rb:
def f1(v1)......
文件b.rb:
load "a.rb"
def f2(v2)......
上述两个文件都在父目录中。现在,如果我使用b.rb
或load
在当前目录中调用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:in
require'
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
的情况下无法执行任何操作。
我的问题是:有没有办法将两个函数分成两个文件同时只加载一次(不知道函数之间有任何依赖关系)?
答案 0 :(得分:2)
在文件b.rb中:
require_relative "./a.rb"
def f2(v2)......