调用另一个不是gem的ruby文件

调用另一个不是gem的ruby文件,ruby,class,file,Ruby,Class,File,我想创建一个带有函数库的静态ruby类。我在Vista上使用ruby 1.9.2 我的班级是这样的: class TestClass def say_hello puts "say hello" end end 在TestClass.rb文件中(我想我是正确的,因为所有关于类的ruby教程都是一团乱麻,把所有东西都放在一个神奇的东西(文件?)中,好像IRB是所有事情的开始和结束一样) 我的rubymain()(是的,我来自Java)或程序条目,或者在ruby中调用它的内容是:

我想创建一个带有函数库的静态ruby类。我在Vista上使用ruby 1.9.2

我的班级是这样的:

class TestClass

  def say_hello
    puts "say hello"
  end
end
在TestClass.rb文件中(我想我是正确的,因为所有关于类的ruby教程都是一团乱麻,把所有东西都放在一个神奇的东西(文件?)中,好像IRB是所有事情的开始和结束一样)

我的ruby
main()
(是的,我来自Java)或程序条目,或者在ruby中调用它的内容是:

require 'TestClass.rb'

puts "start"
say_hello
但它在以下方面失败了:

C:\ruby_path_with_all_my_classes>ruby classuser.rb
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load --
 TestClass.rb (LoadError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from classuser.rb:1:in `<main>'
C:\ruby\u path\u with\u all\u my\u classes>ruby classuser.rb
:29:在“require”中:没有要加载的此类文件--
TestClass.rb(加载错误)
from:29:in'require'
来自classuser.rb:1:in`'
它是如何工作的?是否可以在Ruby中调用其他文件,或者您只被困在一个包含所有类的文件中?

尝试使用

require './TestClass.rb'

相关:

TestClass文件是否在同一目录中? 将TestClass.rb文件设置为小写,并使用

require './testclass'
不需要.rb

我建议将所有类放在lib文件夹中。 然后您需要以下文件:

require './lib/testclass'

99%的情况下,当计算机告诉你它找不到东西时,是因为东西不在那里。因此,您需要检查的第一件事是,文件系统中是否确实有一个名为
TestClass.rb
的文件

在其余99%的情况下,电脑找错了地方。(嗯,实际上,计算机通常在正确的地方寻找,但它正在寻找的东西在错误的地方)
require
$LOAD\u路径
加载文件,因此您必须确保文件
TestClass.rb
所在的目录实际上位于
$LOAD\u路径

或者,如果您不希望
$LOAD\u路径
要求文件,而是相对于执行
要求
的文件位置,则需要使用
要求
相对

但是,请注意,您的代码无论如何都不会工作,因为
say_hello
TestClass
类实例的实例方法,但您是在
main
对象上调用它,该对象是
对象的实例,而不是
TestClass

还请注意,Ruby文件的标准命名约定是
snake\u case
,特别是文件主类/模块的
snake\u case
版本。因此,在您的情况下,该文件应命名为
test\u class.rb
。另外,
require
require\u relative
为它们自己找出正确的文件扩展名,因此您应该去掉
.rb
。第三,标准的Ruby编码风格是两个缩进空格,而不是四个


当然,所有这些都不会导致您的代码不起作用,因为它纯粹是一种风格,但可能会导致人们不愿意回答您的问题,因为这表明您没有充分尊重他们的社区,甚至没有学会最基本的规则。

它工作得很好,谢谢!哦,对于静态类,我使用self.methodnameyep,self在rubyI中创建静态类的方法使用同一文件夹中的类,所以我非常确定错误不是名称空间。谢谢,关于ruby文件的信息不多,需要的搜索结果都是关于rubygems的。不要把
[ruby]
放在问题的开头。这就是标签的用途。