我在同一目录中有两个.rb文件
samplecode.rb
otherclass.rb
这是SampleCode的内容
require 'otherclass'
include OtherClass
class SampleCode
#...
end
这是OtherClass的内容
require 'samplecode'
class OtherClass
#...
end
当我运行“ruby otherclass.rb”时,我收到以下错误:
我无法弄清楚出了什么问题,因为这两个文件肯定在同一个目录中。是什么给了什么?
答案 0 :(得分:2)
尝试:
require './otherclass'
和
require './samplecode'
require应处理循环引用问题,但您当前的目录可能不在您的路径中。
答案 1 :(得分:2)
require
方法搜索Ruby的$LOAD_PATH
中的文件,出于安全原因,这些文件不包含当前目录。因此,当您require 'sample_code'
时,它会在您的系统中查找该文件而无法找到它,因为它位于您当前的目录中。
您应该将当前目录添加到搜索路径,以便Ruby找到您的脚本:
ruby -l . other_class.rb
请注意,如果您尝试从sample_code.rb
所在的目录外部运行脚本,它将无效。如果当前目录中包含具有相同名称的其他文件,则将加载并执行该文件而不是脚本。这是一个可能的攻击向量,以及当前目录不在搜索路径中的原因。
答案 2 :(得分:2)
试试这个:
在加载文件时使用require_relative不存在ruby的$ LOAD_PATH