Ruby require";“没有要加载的此类文件”;道路上仍有明显的错误

Ruby require";“没有要加载的此类文件”;道路上仍有明显的错误,ruby,scripting,require,load-path,Ruby,Scripting,Require,Load Path,我一直在尝试让一个ruby文件需要另一个ruby文件,我觉得我快疯了。我的设置如下 “/raid1/ruby code/benchmark/”中的两个文件 CommandRunner Benchmarker 指挥官 标杆 Benchmarker是这一点上的主要程序,并且想要要求CommandRunner,我已经尝试了很多不同的方法,但没有一种有效。下面是我在Benchmarker开始时列出的所有内容的列表 require 'CommandRunner' 需要“CommandRunner” 需要“

我一直在尝试让一个ruby文件需要另一个ruby文件,我觉得我快疯了。我的设置如下

“/raid1/ruby code/benchmark/”中的两个文件

CommandRunner Benchmarker 指挥官 标杆 Benchmarker是这一点上的主要程序,并且想要要求CommandRunner,我已经尝试了很多不同的方法,但没有一种有效。下面是我在Benchmarker开始时列出的所有内容的列表

require 'CommandRunner' 需要“CommandRunner” 需要“./CommandRunner” $LOAD_PATH.unshift File.expand_PATH(File.dirname($PROGRAM_NAME)) 需要“CommandRunner” $LOAD_PATH.unshift File.expand_PATH(File.dirname($PROGRAM_NAME)) 需要“./CommandRunner” 我还使用require\u relative尝试了上述所有排列。我尝试过将文件加载到emacs内部的irb中,并且在命令行中尝试过。在irb中的某一点上,它将使用require“CommandRunner”加载一次,然后加载,直到我将其切换回“./CommandRunner”,然后再次加载

require 'CommandRunner' 事实上,我犯了一个错误

`require_relative': no such file to load -- /raid1/ruby-code/benchmark/CommandRunner (LoadError) `require_relative':没有要加载的文件-- /raid1/ruby代码/benchmark/CommandRunner(LoadError) 哪个是文件的正确路径


我已经把它换成了load,这似乎起了作用,我看到了奇怪的行为,但那可能就是我。有人知道这里会发生什么吗

是文件CommandRunner的名称,而不是CommandRunner.rb?ruby文件的标准命名约定是使用小写和下划线,因此即使类名是CommandRunner,文件也应该是command_runner.rb,然后需要“command_runner”才能工作。

文件名是CommandRunner,我可能会更改它,因为我不确定标准做法是什么,但现在这是文件名。我在文档中找不到具体不支持的文件名。如果您将CommandRunner更改为CommandRunner.rb,它会工作,但我认为eval.c中可能存在一个错误,即它找不到CommandRunner文件(更糟糕的是,告诉您该文件不存在)。啊,我想我找到了它。从“…否则,Ruby将尝试在名称中添加
.rb”“、
.so”“,等等。”因此,这指定如果没有提供扩展,Ruby将尝试添加有效的扩展,因此没有指定扩展。换句话说,如果您需要扩展,那么任何扩展都不被认为是无效的。这确实是问题所在。我需要训练自己去ruby doc,就像我用Lisp去Hyperspec一样。谢谢! $LOAD_PATH.unshift File.expand_path(File.dirname($PROGRAM_NAME)) require './CommandRunner' require 'CommandRunner' `require_relative': no such file to load -- /raid1/ruby-code/benchmark/CommandRunner (LoadError)