从其他位置运行ruby文件时发生加载错误

从其他位置运行ruby文件时发生加载错误,ruby,Ruby,我有以下问题: 我的ruby项目结构:ruby_源码\ file1.rb file2.rb 文件3.rb 在file1.rb中, 需要“文件2” 需要“文件3” 现在,如果我从Ruby_源代码运行file1.rb,我不会得到任何错误 但是,当我从不同的系统位置运行相同的程序时,例如(c:) 错误是加载错误 有人能帮我吗?试试这个: require_relative 'file2' 在Ruby 1.9.x中。它将在file1目录中搜索file2 在旧版本中,您可以尝试以下操作: $: <&

我有以下问题:

我的ruby项目结构:ruby_源码\ file1.rb file2.rb 文件3.rb

在file1.rb中, 需要“文件2” 需要“文件3”

现在,如果我从Ruby_源代码运行file1.rb,我不会得到任何错误

但是,当我从不同的系统位置运行相同的程序时,例如(c:)

错误是加载错误

有人能帮我吗?

试试这个:

require_relative 'file2'
在Ruby 1.9.x中。它将在
file1
目录中搜索
file2

在旧版本中,您可以尝试以下操作:

$: << File.dirname($0) 
$:您可能需要使用:

require\u relative通过允许加载与包含require\u relative语句的文件相关的文件来补充内置的require方法

见进一步讨论:

如果运行Ruby 1.8:


哦,你应该接受一些问题的答案。请不要做后者。在旧版本中,您可能希望执行类似于
require File.expand_path('../file2',uu File_u)
无需更改$LOAD_路径修改LOAD_路径是一种潜在的安全风险,而且在库代码中根本不需要这样做,总有更好的alternatives@injekt:由于
已经是
$LOAD\u PATH
(在Ruby 1.8.x中)的一部分,我看不到添加程序目录会带来额外的安全风险。我不知道我们在谈论库。确切地说,它是1.9之前的加载路径,更改它的原因是由于安全风险,为什么我们要撤消这些更改?OP没有提供足够的信息来判断我们是否在谈论图书馆,但这不重要。你永远不需要修改加载路径,所以我尽量避免新手认为这没问题,在你意识到这一点之前,主流代码都存在着可怕的安全风险